AUD$UNIFIED 表是Oracle 12c+ 的统一审计(Unified Auditing)日志表,存储所有数据库审计记录。
!注意:需使用具有AUDIT_ADMI权限的非sys用户执行操作。实验中使用audit_zw用户。
-- 1. 查看当前审计日志保留策略
SELECT * FROM dba_audit_mgmt_cleanup_events;
#19c环境用下面这个
SELECT * FROM DBA_AUDIT_MGMT_CLEAN_EVENTS;
-- 查看当前审计清理配置 SELECT * FROM DBA_AUDIT_MGMT_CONFIG_PARAMS;
-- 查看已有的清理作业
SELECT * FROM DBA_AUDIT_MGMT_CLEANUP_JOBS;
查看统一审计90天前的数据条数:
SQL> r
1 SELECT COUNT(*)
2 FROM UNIFIED_AUDIT_TRAIL
3* WHERE EVENT_TIMESTAMP < SYSTIMESTAMP - INTERVAL '90' DAY
COUNT(*)
----------
46963050
-- 2. 清理过旧的审计记录(例如清理30天前的)
有其他的软件兼具审计功能的话,本库的审计可以设置个自动清理阈值 -- 设置最后归档时间为30天前 BEGIN DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP( audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, last_archive_time => SYSTIMESTAMP - INTERVAL '30' DAY ); END; /
-- 验证设置是否成功
SELECT PARAMETER_NAME, PARAMETER_VALUE, AUDIT_TRAIL
FROM DBA_AUDIT_MGMT_CONFIG_PARAMS
WHERE PARAMETER_NAME = 'LAST ARCHIVE TIME'
AND AUDIT_TRAIL = 'UNIFIED AUDIT TRAIL';
--执行清理
BEGIN
DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,
use_last_arch_timestamp => TRUE
);
END;
/
-- 3. 设置自动清理策略(建议保留30-90天)
-- 创建每周执行的自动清理作业
BEGIN
DBMS_AUDIT_MGMT.CREATE_PURGE_JOB(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,
audit_trail_purge_interval => 168, -- 168小时 = 7天
audit_trail_purge_name => 'UNIFIED_AUDIT_PURGE_JOB',
use_last_arch_timestamp => TRUE
);
END;
/
-- 查看作业状态
SELECT JOB_NAME, STATE, LAST_START_DATE, NEXT_RUN_DATE
FROM DBA_SCHEDULER_JOBS
WHERE JOB_NAME = 'UNIFIED_AUDIT_PURGE_JOB';
如果没有查到数据,可能是没有授权,需切换sys用户授予权限:
GRANT SELECT ON DBA_SCHEDULER_JOBS TO audit_zw;
再次查询可得:
|