1. 程式人生 > >如何管理oracle的告警日誌和監聽日誌

如何管理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對應的空間被釋放


********/