詳解Oracle日志文件管理
Oracle日志文件相信大家都有一定的了解,下面就為您詳細(xì)介紹Oracle日志文件管理方面的知識(shí),希望可以讓您對(duì)Oracle日志文件有更深的了解。
ORACLE數(shù)據(jù)庫(kù)的Oracle日志文件$ORACLE_BASE/admin/orasid/bdump/alert_orasid.log記錄了重作日志的轉(zhuǎn)換,數(shù)據(jù)庫(kù)啟動(dòng)和關(guān)閉,數(shù)據(jù)庫(kù)結(jié)構(gòu)的改變,回退段的修改,死鎖,內(nèi)部錯(cuò)誤等信息.
數(shù)據(jù)庫(kù)管理員需要檢查這個(gè)文件有無(wú)ORA-錯(cuò)誤并定期地對(duì)這個(gè)日志文件進(jìn)行存檔整理。
在UNIX下可以用grep命令把a(bǔ)lert_orasid.log里出現(xiàn)的錯(cuò)誤保存到另一個(gè)文件。然后去找原因。
$grep ORA- alert_orasid.log error.log
大家都知道,文件越大,其打開(kāi)和讀寫(xiě)的開(kāi)銷越大。如果Oracle日志文件太大了(超過(guò)5M), 需
- $cp $ORACLE_HOME/network/log/listener.log $ORACLE_BACKUP/network/log/listener_1.log
- $cp /dev/null $ORACLE_HOME/network/log/listener.log
要對(duì)它截?cái)嗵幚怼?br />
直接刪除它,讓ORACLE重新生成不是好的方法。因?yàn)镺RACLE是通過(guò)一個(gè)指向文件的指針進(jìn)行寫(xiě)操作。
在數(shù)據(jù)庫(kù)運(yùn)行時(shí)刪除了這個(gè)文件, ORACLE仍然用原來(lái)的文件指針進(jìn)行寫(xiě)操作,有可能寫(xiě)一個(gè)不存在的文件導(dǎo)致硬盤(pán)空間占用。
我們要采用以下的方法:
- $tail -100 $ORACLE_BASE/admin/orasid/bdump/alert_orasid.log /tmp/oracle_temp.log
- $cp /tmp/oracle_temp.log $ORACLE_BASE/admin/orasid/bdump/alert_orasid.log
- $rm /tmp/oracle_temp.log
對(duì)日志文件進(jìn)行截?cái)嗵幚怼?/p>
listener的日志文件$ORACLE_HOME/network/log/listener.log記錄了通過(guò)listener處理的網(wǎng)絡(luò)請(qǐng)求信息,它包含客戶端請(qǐng)求的時(shí)間,連接方式(專用或共享),連接程序,網(wǎng)絡(luò)協(xié)議,主機(jī)名,網(wǎng)絡(luò)端口號(hào)等信息。
我們也需要周期地截?cái)嗨椒ㄊ窍韧V筶istener記日志的工作:
$lsnrctl set log_status off
然后進(jìn)行文件處理( 把原來(lái)的日志保存到備份文件夾, 使原來(lái)的listener.log置空 )
文件操作完成后,打開(kāi)listener記日志的工作:
$lsnrctl set log_status on
如果你會(huì)寫(xiě)簡(jiǎn)單的shell程序,可以把上面的步驟固化成一個(gè)腳本,定一個(gè)時(shí)間表, 讓操作系統(tǒng)去做。
下面是我寫(xiě)的一個(gè)按天分割保存listener.log的文件auto_listener.sh
- rq=` date +"%d" `
- cp $ORACLE_HOME/network/log/listener.log $ORACLE_BACKUP/network/log/listener_$rq.log
- su - oracle -c "lsnrctl set log_status off"
- cp /dev/null $ORACLE_HOME/network/log/listener.log
- su - oracle -c "lsnrctl set log_status on"
您可以根據(jù)自己的情況定義環(huán)境變量ORACLE_HOME,ORACLE_BACKUP或者直接改成實(shí)際的目錄就可以讓操作系統(tǒng)root用戶運(yùn)行這個(gè)shell腳本完成日志文件的分割處理。
【編輯推薦】