目的:
每個資料庫都有一個alert.log。 資料庫的警報日志是包含内部錯誤(ORA-600/7445),損壞錯誤和死鎖錯誤(ORA-60),管理操作以及SQL * Plus語句STARTUP,SHUTDOWN, 存檔日志和恢複。
每次發生這些事件時,Oracle都會向警報日志寫入資料。
本筆記根據警報日志的常見問題提供有關閱讀,編輯和查詢警報日志的資訊。
方案:
1.如果警報日志被删除會發生什麼?
如果删除警報日志,則在下次發生警報日志中記錄的事件時,Oracle會自動建立新日志。
2.如果警報日志被鎖定,是否會更新?
如果警報日志在資料庫啟動或運作時由應用程式打開,則可能會遇到問題,即需要從磁盤重新加載警報日志,并且将丢失釋出到應用程式的更改。如果您不從磁盤重新加載警報日志,則在儲存警報日志時,啟動/事件所做的更改将會丢失。
例如:
a.警報日志在文本編輯器中打開并進行更改。
b.更改系統切換日志檔案;釋出
c.日志檔案切換記錄将不會釋出,直到編輯器釋放鎖定。如果儲存編輯器中所做的更改,日志切換将不會釋出到警報日志中。
3.如何将自己的消息寫入警報日志。
如果要将消息寫入警報日志,則可以使用未記錄的KSDWRT過程(DBMS_SYSTEM的一部分)。
關于DBMS_SYSTEM的注意事項:
實際上,隻有在Oracle支援人員要求時才能安裝該軟體包。
它沒有記錄在伺服器文檔中。
是以,軟體包的功能可能會改變,恕不另行通知
它僅在Oracle支援人員的指導下使用,否則不受支援。
根據内部注釋153324.1:
一般來說,如果一個軟體包根本不在Oracle文檔中,這是故意的,因為它不适合最終使用者使用。 客戶應避免使用未記錄的軟體包,除非有特别訓示使用它們
Oracle支援或Oracle開發。
sys.dbms_system.ksdwrt的第一個參數表示目标:
*使用1寫入跟蹤檔案。
*使用2寫入“alert.log”。
*使用3寫入兩者。
第二個參數是消息。
例:
begin
sys.dbms_system.ksdwrt(2, 'My own message');
end;
/
4.如何使用SQL查詢警報日志。
從9i開始,您可以将外部平面檔案映射到Oracle表格。
在11g中,X $ DBGALERTEXT現在以表格形式存在。 您可以查詢表格以擷取所需的特定列。