专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

详解Oracle数据库审计清理及审计表转移表空间,值得收藏

ins518 2024-10-13 06:07:19 技术文章 13 ℃ 0 评论

概述

在对数据库巡检时发现system表空间占用到99%,检查段大小排序后发现是aud$审计表导致,下面整理了下对数据库审计清理的过程及空间转移步骤。


1、检查审计

检查发现aud$审计记录数到1亿3千万条了,下图是清理前system表空间情况

可以看到时间记录从10年到现在,

下面开始进行数据库审计清理


2、备份数据库审计内容(保留最近1年)

Bash
create table NC633.aud_190613 as select * from aud$ where substr(sysdate-NTIMESTAMP#,2,9)<360;

3、清理数据库审计

由于是正式库,怕truncate操作会带来其他的一些问题,不直接做truncate,而是执行以下命令:

Bash
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操作耗资源),只是不一定那么快释放空间。

从下表可以看到清理后system表空间

因为怕对system表空间影响,所以下面开始对aud$表做转移:


4、建立aud表空间

Bash
create tablespace aud datafile 'F:\ORADATA\aud01.dbf' size 30G autoextend off ;

5、移动审计到其他表空间

命令如下:

Bash
BEGIN
DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD,
audit_trail_location_value => 'aud');
END;
/

BEGIN
DBMS_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';

6、迁移回aud$表

Bash
alter table aud$ nologging
insert into aud$ select * from NC633.aud_190613
alter table aud$ logging

观察aud表空间增长情况可以看到aud$的插入情况

完成。


篇幅有限,这一块内容就介绍到这了,后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下!

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表