oracle表空间使用率超过多少回报异常
㈠ Oracle 已经警告临时表空间不足 可是已经200G了 而且使用率不高 怎么处理
你的用户系统权限是不是没设置‘unlimited tablespace’?不然200G不会出现这种问题的。
使用sql查看表空间使用情况:
select a.tablespace_name,
a.bytes / 1024 / 1024 "Sum MB",
(a.bytes - b.bytes) / 1024 / 1024 "used MB",
b.bytes / 1024 / 1024 "free MB",
round(((a.bytes - b.bytes) / a.bytes) * 100, 2) "percent_used"
from (select tablespace_name, sum(bytes) bytes
from dba_data_files
group by tablespace_name) a,
(select tablespace_name, sum(bytes) bytes, max(bytes) largest
from dba_free_space
group by tablespace_name) b
where a.tablespace_name = b.tablespace_name
order by ((a.bytes - b.bytes) / a.bytes) desc;
实在不行的话,再迁移表空间。
㈡ 1如果Oracle的表空间满了,会出现什么问题如何解决
表空间一旦满了,如果磁盘有空间请加数据文件,一般都没有问题。
为何要给用户指定临时表空间:由于Oracle工作时经常需要一些临时的磁盘空间,这些空间主要用作查询时带有排序(Group by,Order by等)还有些常用的SQL等算法所用,当用完后就立即释放,对记录在磁盘区的信息不再使用,因此叫临时表空间。一般安装之后只有一个TEMP临时表空间,也可以自己指定。
为何要给用户指定表空间:表空间是数据库的逻辑划分,一个表空间只能属于一个数据库。所有的数据库对象都存放在指定的表空间中。但主要存放的是表, 所以称作表空间。
Oracle数据库中至少存在一个表空间,即SYSTEM的表空间。
Oracle数据库开创性地提出了表空间的设计理念,这为Oracle数据库的高性能做出了不可磨灭的贡献。可以这么说,Oracle中很多优化都是基于表空间的设计理念而实现的。一:控制用户所占用的表空间配额。二:控制数据库所占用的磁盘空间。三:灵活放置表空间,提高数据库的输入输出性能。另外,还可以对表空间进行独立备份。四:大表的排序操作。五:日志文件与数据文件分开放,提高数据库安全性。
㈢ oracle表空间占用率高和失效用户
第一个问题。可能有没有设置自增长。如果有的话就没问题了。
没有的话 你要调整属性了。
第二个问题。很多用户是系统自建的用户,有一些设置是系统某些功能要使用的账号。
如果你有涉及到的话,删除了就要出问题的。、
给你的建议就是勿动。
㈣ oracle 磁盘使用率达到多少后会影响写入速度
ump文件中的内容是系统的跟踪日志,如果系统正常没有不要看的话可以全部删掉。
想永久性不产生日期调整两个初始化参数试试disk_asynch_io和filesystemio_options。不过万一出了问题就查不到日志信息了。
㈤ oracle 数据文件太大 太多如何处理 (具体数据有几十个oracle 用户,表空间文件有上百G)
启动和运行太慢也许和数据库的配置有太多的关系。SGA或者PGA的内存分配啊什么的。另外如果查询速度过慢也可能和表空间的使用率过大没有过大的剩余表空间有关,如果有过程,而且使用临时表,则可能是临时表空间的使用率过高没有和几乎没有剩余表空间有关系。你可以从v$datafiles
视图中查看下个个数据文件的使用和剩余情况。
㈥ 怎么写一个脚本检查oracle数据库表空间,如果利用率超过80%,就执行一条加表空间的SQL
您好
SELECT UPPER(F.TABLESPACE_NAME) "表空间名",
D.TOT_GROOTTE_MB "表空间大小(M)",
D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",
TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用比",
F.TOTAL_BYTES "空闲空间(M)",
F.MAX_BYTES "最大块(M)"
FROM (SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
FROM SYS.DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F,
(SELECT DD.TABLESPACE_NAME,
ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
FROM SYS.DBA_DATA_FILES DD
GROUP BY DD.TABLESPACE_NAME) D
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
ORDER BY 1;
㈦ Oracle 表空间使用率较多,应该如何优化或调整。
扩展表空间有两种方法
一是拓展原有的表空间,语句
ALTER DATABASE DATAFILE
'/export/home/oracle/oradata//undotbs01.dbf' --这里是表空间的数据文件路径
RESIZE 5000M;--这里是你要拓展到多大
二是为表空间增加数据文件,语句
ALTER TABLESPACE ULTRANMS_DEFAULT --这里是表空间的名字
ADD DATAFILE '/export/home/oracle/oradata/ultranms_default02.dbf' --增加数据文件的路径
SIZE 500M --增加数据文件的大小
AUTOEXTEND ON NEXT 1M --自增加,每次增加1M
MAXSIZE UNLIMITED;--总大小无限制
够详细了吧!~
㈧ Oracle数据库问题,表空间使用率99%,怎么解
第一个问题。可能有没有设置自增长。如果有的话就没问题了。 没有的话 你要调整属性了。 第二个问题。很多用户是系统自建的用户,有一些设置是系统某些功能要使用的账号。 如果你有涉及到的话,删除了就要出问题的。、 给你的建议就是勿动。
㈨ oracle表空间使用率需要调整到多少
oracle表空间使用率需要调整到多少,具体解决方案如下:
解决方案1:
不宜超过80%,除非你表空间内的表数据都是完全连续存储的。
解决方案2:
设成可自动拓展的,就不用管这些了
1、查询表空间使用情况
SELECTUPPER(F.TABLESPACE_NAME)"表空间名",
D.TOT_GROOTTE_MB"表空间大小(M)",
D.TOT_GROOTTE_MB-F.TOTAL_BYTES"已使用空间(M)",
TO_CHAR(ROUND((D.TOT_GROOTTE_MB-F.TOTAL_BYTES)/D.TOT_GROOTTE_MB*100,2),'990.99')||'%'"使用比",
F.TOTAL_BYTES"空闲空间(M)",
F.MAX_BYTES"最大块(M)"
FROM(SELECTTABLESPACE_NAME,
ROUND(SUM(BYTES)/(1024*1024),2)TOTAL_BYTES,
ROUND(MAX(BYTES)/(1024*1024),2)MAX_BYTES
FROMSYS.DBA_FREE_SPACE
GROUPBYTABLESPACE_NAME)F,
(SELECTDD.TABLESPACE_NAME,
ROUND(SUM(DD.BYTES)/(1024*1024),2)TOT_GROOTTE_MB
FROMSYS.DBA_DATA_FILESDD
GROUPBYDD.TABLESPACE_NAME)D
WHERED.TABLESPACE_NAME=F.TABLESPACE_NAME
ORDERBY1;
--查询表空间的freespace
selecttablespace_name,
count(*)asextends,
round(sum(bytes)/1024/1024,2)asMB,
sum(blocks)asblocks
fromdba_free_space
groupbytablespace_name;
2、查询表空间的总容量
selecttablespace_name,sum(bytes)/1024/1024asMB
fromdba_data_files
groupbytablespace_name;
3、查询表空间使用率
selecttotal.tablespace_name,
round(total.MB,2)asTotal_MB,考试大论坛
round(total.MB-free.MB,2)asUsed_MB,
round((1-free.MB/total.MB)*100,2)||'%'asUsed_Pct
from(selecttablespace_name,sum(bytes)/1024/1024asMB
fromdba_free_space
groupbytablespace_name)free,
(selecttablespace_name,sum(bytes)/1024/1024asMB
fromdba_data_files
groupbytablespace_name)total
wherefree.tablespace_name=total.tablespace_name;