審計日志如果把SYSTEM表空間撐爆,也會導致數據庫停擺,且11g默認審計是開啟狀態。
今天就遇到了這樣的情況,寫了下面腳本來實現自動清理工作,記錄操作過程。
TRUNCATE TABLE SYS.AUD$ REUSE STORAGE;
--對於已經被審計日志撐爆的數據庫或者初始化清理工作時報錯ORA-46267,強烈建議用該命令,清空一次審計日志,同時釋放表空間,再做下面操作
BEGIN --做審計清理的初始化工作
SYS.dbms_audit_mgmt.init_cleanup(audit_trail_type => SYS.DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD,
default_cleanup_interval => 24 );
END;
/
BEGIN --新建調度,對審計日志符合過期要求(要求自定義)的數據打上時間戳,交由后面的清理JOB完成清理,保留60天的審計日志,每晚22點打標簽。
DBMS_SCHEDULER.CREATE_JOB(job_name => 'DAILY_AUD_TIMESTAMP',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD,LAST_ARCHIVE_TIME => SYSDATE-60); END;', --為超過60天的數據打上過期標簽
start_date => sysdate,
repeat_interval => 'FREQ=DAILY;BYHOUR=22', --每天的22點執行
enabled => TRUE,
comments => 'Create an archive timestamp');
END;
/
BEGIN --清理JOB,每7天清理一次
SYS.DBMS_AUDIT_MGMT.CREATE_PURGE_JOB(AUDIT_TRAIL_TYPE => SYS.DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
AUDIT_TRAIL_PURGE_INTERVAL => 168, --單位小時,168小時等於7天
AUDIT_TRAIL_PURGE_NAME => 'AudPurge',
USE_LAST_ARCH_TIMESTAMP => TRUE);
END;
/
————————————————
版權聲明:本文為CSDN博主「marssea」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/marssea/article/details/84327996
