Oracle的數據庫日志大致可以分為三大類
告警日志、跟蹤日志、重做日志
今天主要來談談告警日志
告警日志(記錄報錯信息)
一般命名為alert_<SID>.log,數據庫告警日志是按時間順序記錄message和錯誤信息。
告警日志具體記錄的內容
1:所有的內部錯誤(ORA-600)信息,塊損壞錯誤(ORA-1578)信息,以及死鎖錯誤(ORA-60)信息等。
2:管理操作,例如CREATE、ALTER、DROP語句等,以及數據庫啟動、關閉以及日志歸檔的一些信息。
2.1 涉及物理結構的所有操作:例如創建、刪除、重命名數據文件與聯機重做日志文件的ALTER DATABASE命令,此外還涉及重新分配數據文件大小以及將數據文件聯機與脫機的操作。
2.2 表空間操作,例如DROP與CREATE命令,此外還包括為了進行用戶管理的備份而將表空間置入和取出熱備份模式的操作
3:與共享服務器或調度進程相關功能的消息和錯誤信息。
4:物化視圖的自動刷新過程中出現的錯誤。
5:動態參數的修改信息。
查看告警日志所在的路徑
SQL> show parameter background_dump_dest;
如何監控告警日志
1.通過外部表來查看告警日志文件的內容。相當的方便。然后也是使用定制SQL語句來查詢錯誤信息
依據日志所在路徑創建邏輯目錄
create or replace directory alert_log as '/home/oracle/app/product/19.3.0/dbhome_1/rdbms/log';
創建外部表關聯這個目錄,就可以直接通過表查看日志信息了
create table alert_logs ( text varchar2(2000) ) organization external ( type oracle_loader default directory alert_log access parameters ( records delimited by newline fields reject rows with all null fields ) location ( 'alert_CDB.log' ) ) reject limit unlimited; 檢查是否存在數據庫系統錯誤提示信息,查看有無“ORA-”,Error”,“Failed”等出錯信息。根據錯誤信息進行分析並解決。 select * from alert_logs where text like '%ORA-%' or text like %Error% ....
;
2.通過shell腳本定時歸檔告警日志
告警日志如果不及時歸檔,時間長了,告警日志文件會變得非常大,查看、讀取告警日志會引起額外的IO開銷。所以一般應該按天歸檔告警日志文件,保留一段時間(例如 90天),超過規定時間的刪除。
告警日志是否可以刪除呢? 以前有位同事說background_dump_dest目錄下的跟蹤文件除了告警日志外都能刪除,如果刪除告警日志文件有可能會產生意想不到的錯誤,我半信半疑,在測試服務器刪除告警日志,驗證后發現沒有什么影響,系統會重新生成告警日志文件(時間上不會立即生成告警日志文件,而是當進程向告警日志寫入記錄時就會生成新的告警日志文件)。
參考地址:https://www.cnblogs.com/kerrycode/p/3168662.html