oracle收缩表空间

1、发现一个表空间aaa使用率已达到93%,急需扩容,但asm磁盘组空间同样不足,只剩下不到100G,磁盘组扩容需要存储工程师配合,存储工程师未在现场,不具备扩容条件。

2、查看发现有一个表空间bbb为1T,但使用很低,只有20%。

3、查看该bbb表空间最大的对象是sys.aud$;

4、计划将bbb表空间resize释放空间,然后再跟aaa扩容;

5、使用alter database datafile 35 resize 1G,无法成功,发现曾经使用过最大的扩展分区;

ORA-03297: file contains used data beyond requested RESIZE value

6、查看该表空间扩展最大的对象

select * from (

select

tablespace_name,

owner,

segment_name topseg_segment_name,

partition_name,

segment_type,

round(bytes/1048576) MB

from dba_segments

where upper(tablespace_name) like upper('%xxx%')

order by MB desc

)

where rownum

发现有以BIN$开头的对象的话,清空下回收站。

7、发现扩展最大的是sys.aud$

8、由于数据库开启的审计是默认,对大部分的dml操作不会记录,因此可直接truncate

9、登录数据库truncate table sys.aud$

10、再次alter database datafile 35 resize 1G 成功

11、如果resize 不能成功,可将resize空间改大一些,比如5G,10G,就可成功。

alter database datafile 35 resize 5G;

你可能感兴趣的:(Oracle,运维,oracle,数据库,sql)