system表空间暴涨问题

今天接到一个案例,客户数据库系统system表空间增长非常快,达到了32个G,要求查一下原因。
心理第一个反应是,有人把业务数据放到system表空间下了?先查查看:

select username,default_tablespace from dba_users ;

在这里插入图片描述
查看了,没有业务数据放到system表空间下。
再次,考虑表的增长,11G默认审计是开启的,查一下:

show parameter audit 

在这里插入图片描述
审计状态 开启。级别DB select * from dba_segments where segment_name = 'AUD$'; 再查一下,审计相关表AUD$
在这里插入图片描述
看来问题确实是 审计表出现大规模增长了。继续查具体信息:

select COUNT(1)from dba_audit_trail ;

在这里插入图片描述
select * from dba_audit_trail ;
在这里插入图片描述
发现异常,同一个K 用户,在爆连数据库,先锁了K用户,联系开发和安全工程师会同查看是否程序端有问题,接下来要解决掉异常登陆的BUG程序,并在库端清除异常登陆审计信息,回收大额空间即可。
此外,我看到别人的案例中思路是:
alter system set audit_trail=none scope = spfile;
停掉审计,我本人并不赞同。
可以对system表空间做一次数据清理,将表中历史数据做一个转存, 然后:
truncate table aud$ reuse storage;
再逐步回收段空间:
alter table aud$ deallocate unused keep 3000M;
再缩小数据文件大小:
ALTER DATABASE DATAFILE 'D:\ora_tablespace\SYSTEM01.dbf' RESIZE 5000M;可分步执行。
此过程中可能会报错:
ORA-03297: file contains used data beyond requested RESIZE value
原因是数据文件收缩大大小取决于高水位线(HWM)的位置,压缩表空间大小,最小必须是该表空间目前最大块段的大小
还可能是表的初始大小分配的太大。(truncate可以降低HWM,所以你收缩表空间之前,可以先查一下truncate aud$后最大块的段所占用的空间,再权衡RESIZE的合理值)
在此引用别人的一个解决方案:https://blog.csdn.net/aptweasel/article/details/8988427,我不再赘述。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值