概述
在对数据库巡检时发现system表空间占用到99%,检查段大小排序后发现是aud$审计表导致,下面整理了下对数据库审计清理的过程及空间转移步骤。
1、检查审计
检查发现aud$审计记录数到1亿3千万条了,下图是清理前system表空间情况
![61905ae85d89ef21bffc378260cf65f0.png](https://img-blog.csdnimg.cn/img_convert/61905ae85d89ef21bffc378260cf65f0.png)
可以看到时间记录从10年到现在,
![32f1dfc14eb837785d6200a52f3efcee.png](https://img-blog.csdnimg.cn/img_convert/32f1dfc14eb837785d6200a52f3efcee.png)
下面开始进行数据库审计清理
2、备份数据库审计内容(保留最近1年)
create table NC633.aud_190613 as select * from aud$ where substr(sysdate-NTIMESTAMP#,2,9)<360;
3、清理数据库审计
由于是正式库,怕truncate操作会带来其他的一些问题,不直接做truncate,而是执行以下命令:
truncate table sys.aud$ reuse storage;alter table sys.aud$ deallocate unused keep 25000m; alter table sys.aud$ deallocate unused keep 20000m;alter table sys.aud$ deallocate unused keep 15000m;alter table sys.aud$ deallocate unused keep 10000m;alter table sys.aud$ deallocate unused keep 5000m;alter table sys.aud$ deallocate unused keep 2000m;alter table sys.aud$ deallocate unused keep 500m;alter table sys.aud$ deallocate unused keep 250m;alter table sys.aud$ deallocate unused keep 10m;
truncate过程1-2分钟之内结束,最后sys.aud$变成10M。如果想删除大表也可以这么操作(delete操作耗资源),只是不一定那么快释放空间。
![a516023ccf867a8c482db0b543589997.png](https://img-blog.csdnimg.cn/img_convert/a516023ccf867a8c482db0b543589997.png)
![270b5d1e36b80612ef95cbdbb28e862c.png](https://img-blog.csdnimg.cn/img_convert/270b5d1e36b80612ef95cbdbb28e862c.png)
从下表可以看到清理后system表空间
![ade0f097074ef95563cce957171b79c5.png](https://img-blog.csdnimg.cn/img_convert/ade0f097074ef95563cce957171b79c5.png)
因为怕对system表空间影响,所以下面开始对aud$表做转移:
4、建立aud表空间
create tablespace aud datafile 'F:ORADATAaud01.dbf' size 30G autoextend off ;
![f25dd9a8bc1bf37d20115b324e02b5e9.png](https://img-blog.csdnimg.cn/img_convert/f25dd9a8bc1bf37d20115b324e02b5e9.png)
5、移动审计到其他表空间
命令如下:
BEGINDBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD,audit_trail_location_value => 'aud');END;/BEGINDBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD,audit_trail_location_value => 'aud');END;/SELECT OWNER, TABLE_NAME, TABLESPACE_NAME FROM DBA_TABLES WHERE TABLE_NAME = 'AUD$' AND OWNER = 'SYS';
![f0c59f05e51b57ba3a76c883c25151d9.png](https://img-blog.csdnimg.cn/img_convert/f0c59f05e51b57ba3a76c883c25151d9.png)
6、迁移回aud$表
alter table aud$ nologginginsert into aud$ select * from NC633.aud_190613alter table aud$ logging
观察aud表空间增长情况可以看到aud$的插入情况
![c50c6bb06a5b37636ef3415213e0f09a.png](https://img-blog.csdnimg.cn/img_convert/c50c6bb06a5b37636ef3415213e0f09a.png)
![11502b41565550f70b7e09a429870a06.png](https://img-blog.csdnimg.cn/img_convert/11502b41565550f70b7e09a429870a06.png)
完成。
篇幅有限,这一块内容就介绍到这了,后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下!
![5ec2f6bffd72517400f489b768123384.png](https://img-blog.csdnimg.cn/img_convert/5ec2f6bffd72517400f489b768123384.png)