客户反应数据仓库的SYSAUX表空间一直在增长,希望排查下原因。
目前SYSAUX表空间使用了4个多G,潜意识觉得也还行吧,查了下有没有应用用户的数据放在了SYSAUX表空间中,结果是没有。
于是利用dba_segments视图,查看下SYSAUX表空间中都是什么东西:
select s.owner,s.segment_name,s.bytes/1024/1024
from dba_segments
where tablespace_name='SYSAUX'
order by 3 desc;
(由于数据库是在内网,结果就不显示了。)
上述语句执行结果发现:WRH$_SQL_PLAN和WRH$_SQLTEXT等几张AWR相关表占用了将近3个G的数据。
select * from WRH$_SQL_PLAN 发现还存在着2013年的数据,而awr采用的是默认保留时间,是7天。说明awr在数据保留这方面出现了问题。
百度了下,网上还是有不少筒子出现了类似问题,关于这个问题,metalink上面有文章专门讲述:Doc ID 1243058.1
该数据库的版本是10.2.0.4,符合文章中提到的版本情况,是oracle的一个bug,oracle无法自动清理awr的过期数据,导致存储AWR的SYSAUX表空间持续增长。
如果不想打补丁,也可以手动清理这几张表的数据,但可能表数据量比较大,delete会很慢,可以的话,就truncate吧。当然,理论上清理这些数据没有问题,但难以预料会出现什么意外情况,最好先找个测试库练练手。。。
现在是两会期间,一切操作尽量避免,这个问题就暂时搁置了。。。
接上----------------------------------------------------------------
下载补丁的时候发现,10.2.0.4的版本不支持打patch的方式。
The purge has different behaviors depending the version: - in 10.2.0.4 is disabled by default because of the lack of a timeout in 10gR2 that 11gR2 has. To enable set event 10455 level 1 and event 10456 level 7
说明10.2.0.4需要通过启动10455事件来解决该问题。