oracle 審計日志清理


 

--進入審計日志目錄:

cd $ORACLE_BASE/admin/$ORACLE_SID/adump

--刪除3個月前的審計文件:

find ./ -type f -name "*.aud" -mtime +91|xargs rm -f

--一次清空所有審計文件

find ./ -type f -name "*.aud"|xargs rm-f

find ./ -mtime +7 -name "*.aud" -type f –delete

通常我們新裝好一個數據庫中查詢審計開關的時候,可能會發現它的設置為DB。(預裝設置,如果為其他表示被認為設置過)

SQL>show parameter audit_trail Name       TYPE     VALUE ----------------------------------- audit_trail   string     DB

audit_trail=DB,代表的是,oracle將把每次審計跟蹤記錄在數據庫的一張叫做AUD$的表中。

SQL>select owner,table_name,tablespace_name from dba_tables a where a.table_name ='AUD$'
OWNER TABLE_NAME TABLESPACE_NAME -------------------------------------------------------------- SYS AUD$ SYSTEM

而這張表所在的表空間,正式oracle數據庫最重要的SYSTEM表空間。

 

由於這個表空間非常特殊:如果此時它正好被設置為自動擴展(AUT=YES)的話:

SQL>select a.tablespace_name,a.bytes,a.autoextensible from dba_data_files a where a.tablespace_name='SYSTEM' TABLESPACE_NAME BYTES AUT -------------------------------------------------------- SYSTEM 2147473648 YES 

長此以往,SYSTEM表空間最終會因為過度肥胖把磁盤撐爆。

(反過來,如果SYSTEM表空間的autoextensible=NO,AUD$表就沒地方寫就會報錯無法分配空間)

 

SO,有點數據庫就會根據情況,將審計功能“關閉”:

1.設置審計參數關閉

SQL>alter system set audit_trail=none scope=spfile;

2.重啟數據庫

SQL>shutdown immediate; SQL>startup;

這時候小伙伴以為高枕無憂了,其實,oracle早有准備,有一個叫強制審計的變態功能在等着你。

只要你敢

  • 用SYSDBA或者SYSOPER權限登錄數據庫
  • 敢startup
  • 敢shutdown

oracle就給你在$ORACLE_BASE/admin/$ORACLE_SID/adump 目錄中記.aud的文件

所以,

開了DB功能,會同時將審計日志記在AUD$表中和操作系統aud文件中。

設置為NONE,仍然會而且毫無其他辦法的將記錄在操作系統aud文件中。

*數據庫的表為:sys.aud$

*操作系統目錄為:$ORACLE_BASE/admin/實例名/adump/

可通過SQL>show parameter audit 查詢到)

 

是不是很變態?

所以這個目錄長期不清理的話,會積壓大量*.aud文件

長期大量不刪除的話,會影響到操作系統inodes

 

所以,小伙伴們:

  • 如果為DB,記得定期清空aud$表
SQL>truncate table sys.aud$;
  • 如果你不想用DB功能,可以設置關閉
SQL>alter system set audit_trail=none scope=spfile;

注意,需要重啟數據庫

SQL>shutdown immediate; SQL>startup;
  • 如果為NONE,記得清空aud文件或者配置crontab定時任務定時清空aud文件。

注意:不要直接刪除adump目錄,否則,你會sqlplus不了數據庫。

 

 
 
 
 
 

 


免責聲明!

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



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