Oracle迁移审计表AUD$
目录
Oracle 数据库中的 AUD 表是用于存储审计信息的系统表。默认情况下,这个表位于SYSTEM表空间中。迁移 AUD 表是用于存储审计信息的系统表。默认情况下,这个表位于 SYSTEM 表空间中。迁移 AUD 表的主要原因包括:
- 性能优化:随着审计数据的累积,AUD$ 表可能会变得非常大,这会占用大量的 SYSTEM 表空间。由于 SYSTEM 表空间对于数据库的操作至关重要(它包含了数据字典等核心信息),如果被大量非核心数据占据,可能会影响到整个数据库的性能。
- 管理方便:将 AUD$ 表迁移到单独的表空间可以让 DBA 更容易管理和维护审计数据。例如,可以为审计数据设置不同的备份策略,或者更灵活地调整表空间大小以适应审计数据的增长。
- 避免表空间耗尽:当开启审计时,AUD 表可能会迅速增长。如果该表在 SYSTEM 表空间中,那么有可能导致SYSTEM 表空间满载,进而影响到数据库的正常运行。通过迁移 AUD 表可能会迅速增长。如果该表在 SYSTEM表空间中,那么有可能导致 SYSTEM 表空间满载,进而影响到数据库的正常运行。通过迁移 AUD 表到其他表空间,可以避免这种情况的发生。
- 安全性考虑:有时出于安全考虑,组织可能希望将敏感数据如审计记录与常规的数据分开存放。这样可以在一定程度上提高审计数据的安全性,并且便于对这些敏感数据进行特别的访问控制。
- 合规性和报告:某些行业或法规要求企业保留特定时间长度的审计日志。将 AUD$ 表移动到专门的表空间可以帮助满足这些合规性需求,并简化了对审计数据的查询和报告过程。
创建 audit 表空间
SQL> create tablespace audit_data datafile '/data/oracle/oradata/orcl/audit01.dbf' size 100m autoextend on next 50m;
将 AUD$ 从 SYSTEM 表空间迁移到新的表空间
注意如果sys.aud$
很大,不需要可以先 truncate,不然移动会很慢。也可能会提示空间不够。
查看当前审计数据大小
SQL> select segment_name,bytes/1024/1024 from dba_segments where segment_name='AUD$';
清空 AUD$
SQL> TRUNCATE TABLE SYS.AUD$ REUSE STORAGE;
将 AUD$ 从 SYSTEM 表空间迁移到新的表空间
BEGIN
DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD,
audit_trail_location_value => 'audit_data');
END;
/
设置审计记录清除间隔
BEGIN
DBMS_AUDIT_MGMT.init_cleanup(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL,
default_cleanup_interval => 120 /* hours */);
END;
/