程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 詳解Oracle日志文件管理

詳解Oracle日志文件管理

編輯:Oracle數據庫基礎

Oracle日志文件相信大家都有一定的了解,下面就為您詳細介紹Oracle日志文件管理方面的知識,希望可以讓您對Oracle日志文件有更深的了解。

ORACLE數據庫的Oracle日志文件$Oracle_BASE/admin/orasid/bdump/alert_orasid.log記錄了重作日志的轉換,數據庫啟動和關閉,數據庫結構的改變,回退段的修改,死鎖,內部錯誤等信息.
數據庫管理員需要檢查這個文件有無ORA-錯誤並定期地對這個日志文件進行存檔整理。

在UNIX下可以用grep命令把alert_orasid.log裡出現的錯誤保存到另一個文件。然後去找原因。
$grep ORA- alert_orasid.log error.log

大家都知道,文件越大,其打開和讀寫的開銷越大。如果Oracle日志文件太大了(超過5M), 需

  1. $cp $ORACLE_HOME/network/log/listener.log $Oracle_BACKUP/network/log/listener_1.log  
  2. $cp /dev/null $Oracle_HOME/network/log/listener.log 

要對它截斷處理。
直接刪除它,讓ORACLE重新生成不是好的方法。因為Oracle是通過一個指向文件的指針進行寫操作。
在數據庫運行時刪除了這個文件, Oracle仍然用原來的文件指針進行寫操作,有可能寫一個不存在的文件導致硬盤空間占用。

我們要采用以下的方法:

  1. $tail -100 $ORACLE_BASE/admin/orasid/bdump/alert_orasid.log /tmp/Oracle_temp.log  
  2. $cp /tmp/oracle_temp.log $Oracle_BASE/admin/orasid/bdump/alert_orasid.log  
  3. $rm /tmp/Oracle_temp.log 

對日志文件進行截斷處理。

listener的日志文件$Oracle_HOME/network/log/listener.log記錄了通過listener處理的網絡請求信息,它包含客戶端請求的時間,連接方式(專用或共享),連接程序,網絡協議,主機名,網絡端口號等信息。

我們也需要周期地截斷它,方法是先停止listener記日志的工作:
$lsnrctl set log_status off
然後進行文件處理( 把原來的日志保存到備份文件夾, 使原來的listener.log置空 )

文件操作完成後,打開listener記日志的工作:
$lsnrctl set log_status on
如果你會寫簡單的shell程序,可以把上面的步驟固化成一個腳本,定一個時間表, 讓操作系統去做。

下面是我寫的一個按天分割保存listener.log的文件auto_listener.sh

  1. rq=` date +"%d" `  
  2. cp $ORACLE_HOME/network/log/listener.log $Oracle_BACKUP/network/log/listener_$rq.log  
  3. su - Oracle -c "lsnrctl set log_status off"  
  4. cp /dev/null $Oracle_HOME/network/log/listener.log  
  5. su - Oracle -c "lsnrctl set log_status on" 

您可以根據自己的情況定義環境變量ORACLE_HOME,Oracle_BACKUP或者直接改成實際的目錄就可以讓操作系統root用戶運行這個shell腳本完成日志文件的分割處理。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved