oracle扩展表空间
针对表空间使用率的报警,首先可以查询视图dba_data_files(需要dba权限),查看表空间的详细信息。
查询语句:
select t.FILE_NAME,t.FILE_ID,t.TABLESPACE_NAME,t.BYTES,t.STATUS,t.AUTOEXTENSIBLE,t.MAXBYTES,t.INCREMENT_BY from sys.dba_data_files t;
如果AUTOEXTENSIBLE列为YES,则表示表空间是自动扩展的,最大可以扩展到MAXBYTES列限制的大小,次表空间的使用率告警可以不去处理。如果AUTOEXTENSIBLE列为NO,则需要手动扩展表空间,有两种方法:
1.增加数据文件
ALTER TABLESPACE tablespace_name ADD DATAFILE ‘file_name’ SIZE 1000M; 根据实际需要设定添加的数据文件大小,例:
ALTER TABLESPACE users ADD DATAFILE '/arp/oraarp/oradata/ams09.dbf' SIZE 1000M;
2.手动增加数据文件尺寸
ALTER DATABASE DATAFILE ‘file_name’ RESIZE 4000M; 根据实际需要resize数据文件的大小,一定要比原文件大,例:
ALTER DATABASE DATAFILE '/arp/oraarp/oradata/ams09.dbf' RESIZE 4000M;
还可以根据需要把表空间的自动扩展打开。
3.设定数据文件自动扩展
ALTER DATABASE DATAFILE ‘file_name’ AUTOEXTEND ON NEXT 100M MAXSIZE 10000M; (NEXT 100M MAXSIZE 10000M,每次增加100M,数据文件最大10000M),例:
ALTER DATABASE DATAFILE '/arp/oraarp/oradata/ams09.dbf' AUTOEXTEND ON NEXT 100M MAXSIZE 10000M;
为了消除告警,也可以手动扩展那些能自动扩展的表空间。例
ALTER TABLESPACE ams ADD DATAFILE '/arp/oraarp/oradata/ams09.dbf' SIZE 10000M AUTOEXTEND ON NEXT 100M MAXSIZE 30000M;
4.表空间使用率查询
select
a.a1 tablespace_name,
b.b2/1024/1024 tablespace_size_M,
(b.b2-a.a2)/1024/1024 used_space_M,
to_number(substr((b.b2-a.a2)/b.b2*100,1,5)) used_percent
from
(select tablespace_name a1, sum(nvl(bytes,0)) a2 from
dba_free_space group by tablespace_name) a,
(select tablespace_name b1,sum(bytes) b2 from
dba_data_files group by tablespace_name) b
where a.a1=b.b1
order by 4 desc;