天天看點

如何編輯,讀取和查詢Alert.Log(文檔ID 1072547.1)

目的:

每個資料庫都有一個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現在以表格形式存在。 您可以查詢表格以擷取所需的特定列。

繼續閱讀