定期清理oracle審計日志


審計日志如果把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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM