如何管理oracle的告警日誌和監聽日誌
一般情況下,我們需要經常管理一些告警日誌,比如資料庫的alert日誌,和監聽的告警日誌。這些日誌都是不停的增長,特別是監聽日誌,如果會話很多,日誌量也會是一個很大的量。一般要求alert日誌和監聽告警日誌不超過2G。如果檔案過大可能會引起效能問題。這一點一定要引起注意。
監聽和alert日誌檔案不超過2G。
#####最好定期執行如下操作:
1.先備份在清空(不是刪除)
先備份 然後把檔案清空:
(1)備份
cp aleter_<$ORACLE_SID>.log /u01/backup_alert
(2)清空
echo '' >alert.log
或者
cat /dev/null >alert.log
可能我們會做這樣一個操作,直接對日誌檔案進行rm -rf ,如果日誌檔案很大,當你進行rm操作後,在磁碟進行df -h會發現,空間未釋放。明明是刪除了,但是為什麼呢??
####如果直接rm 檔案時出現磁碟空間未釋放
lsof |grep deleted 會找到該程序,
/********
未釋放磁碟空間原因:
在Linux或者Unix系統中,通過rm或者檔案管理器刪除檔案將會從檔案系統的目錄結構上解除連結(unlink).然而如果檔案是被
開啟的(有一個程序正在使用),那麼程序將仍然可以讀取該檔案,磁碟空間也一直被佔用。而我刪除的是oracle的告警log檔案
刪除的時候檔案應該正在被使用
如何讓程序釋放呢?
一種方法是kill掉相應的程序,或者停掉使用這個檔案的應用,讓os自動回收磁碟空間
我這個環境有很多程序在使用的這個檔案,停掉程序有點麻煩,再有就是風險很大
當linux開啟一個檔案的時候,Linux核心會為每一個程序在/proc/ 『/proc/nnnn/fd/目錄(nnnn為pid)』建立一個以其pid
為名的目錄用來儲存程序的相關資訊,而其子目錄fd儲存的是該程序開啟的所有檔案的fd(fd:file descriptor)。
kill程序是通過截斷proc檔案系統中的檔案可以強制要求系統回收分配給正在使用的的檔案。
這是一項高階技術,僅到管理員確定不會對執行中的程序造成影響時使用。應用程式對這種方
式支援的並不好,當一個正在使用的檔案被截斷可能會引發不可預知的問題
所以我還是採用停應用來解決
restart oracle資料庫,發現/home/oracle/admin/dbticb/bdump/alert_dbticb.log對應的空間被釋放
********/