是沒有 空間引起的
df -i 發現100%
進一步確認
for i in /*; do echo $i; find $i | wc -l; done
發現是 aaa文件導致的
for i in /aaa/; do echo $i; find $i | wc -l; done
找出對應的應用或者文件夾,發現是ORALE 導致,這時候就知道了是ORACLE 的強制審計功能引起的。
oracle 審計功能
Oracle 11g推出了審計功能,但這個功能會針對很多操作都產生審計文件.aud,日積月累下來這些文件也很多,
默認情況下,系統爲了節省資源,減少I/0操作,其審計功能是關閉的
一、審計功能關閉
1、查看審計功能是否開啓?
su – oracle
sqlplus “/as sysdba”
SQL> show parameter audit_trail
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
audit_trail string DB
說明:VALUE值爲DB,表面審計功能爲開啓的狀態
audit_trail=DB,代表的是,oracle將把每次審計跟蹤記錄在數據庫的一張叫做AUD$的表中。
audit_trail=os , oracle將把每次審計跟蹤記錄在os文件系統中方便調取
2、關閉oracle的審計功能
SQL> alter system set audit_trail=FALSE scope=spfile;
System altered.
3、重啓數據庫
SQL> shutdown immediate;
SQL> startup;
4、驗證審計是否已經被關閉
SQL> show parameter audit_trail
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
audit_trail string FALSE
說明:VALUE值爲FALSE,表面審計功能爲關閉的狀態
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
強制審計的變態功能
- 用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不了數據庫。