以下的文章主要是教我們如何深入的了解Oracle跟蹤事件,我們都知道Oracle提供一類相關的命令,我們可以把Oracle各類的內部結構中所具有的信息轉儲(dump)到Oracle的跟蹤文件中。幫助用戶能根據文件內容來解決各種故障。
一、Oracle跟蹤文件
Oracle跟蹤文件分為三種類型,一種是後台報警日志文件,記錄數據庫在啟動、關閉和運行期間後台進程的活動情況,如表空間創建、回滾段創建、某些alter命令、日志切換、錯誤消息等。在數據庫出現故障時,應首先查看該文件,但文件中的信息與任何錯誤狀態沒有必然的聯系。
後台報警日志文件保存BACKGROUND_DUMP_DEST參數指定的目錄中,文件格式為SIDALRT.LOG。另一種類型是DBWR、LGWR、SMON等後台進程創建的後台跟蹤文件。後台跟蹤文件根據後台進程運行情況產生,後台跟蹤文件也保存在BACKGROUND_DUMP_DEST參數指定的目錄中,文件格式為siddbwr.trc、sidsmon.trc等。
還有一種類型是由連接到Oracle的用戶進程(Server Processes)生成的用戶跟蹤文件。這些文件僅在用戶會話期間遇到錯誤時產生。此外,用戶可以通過執行Oracle跟蹤事件(見後面)來生成該類文件,用戶跟蹤文件保存在USER_DUMP_DEST參數指定的目錄中,文件格式為oraxxxxx.trc,xxxxx為創建文件的進程號(或線程號)。
二、Oracle跟蹤事件
Oracle提供了一類命令,可以將Oracle各類內部結構中所包含的信息轉儲(dump)到Oracle跟蹤文件中,以便用戶能根據文件內容來解決各種故障。設置跟蹤事件有兩種方法,一種是在init.ora文件中設置事件,這樣open數據庫後,將影響到所有的會話。設置格式如下: EVENT="eventnumber trace name eventname [forever,] [level levelnumber] : ......."
通過:符號,可以連續設置多個事件,也可以通過連續使用event來設置多個事件。
另一種方法是在會話過程中使用alter session set events命令,只對當前會話有影響。設置格式如下: alter session set events '[eventnumber|immediate] trace name eventname [forever] [, level levelnumber] : .......'
通過:符號,可以連續設置多個事件,也可以通過連續使用alter session set events 來設置多個事件。
格式說明:eventnumber指觸發dump的事件號,事件號可以是Oracle錯誤號(出現相應錯誤時跟蹤指定的事件)或oralce內部事件號,內部事件號在10000到10999之間,不能與immediate關鍵字同用。
immediate關鍵字表示命令發出後,立即將指定的結構dump到Oracle跟蹤文件中,這個關鍵字只用在alter session語句中,並且不能與 eventnumber、forever關鍵字同用。
trace name 是關鍵字。
eventname指事件名稱(見後面),即要進行dump的實際結構名。若eventname為context,則指根據內部事件號進行跟蹤。
forever關鍵字表示事件在實例或會話的周期內保持有效狀態,不能與immediate同用。level為事件級別關鍵字。但在dump錯誤棧(errorstack)時不存在級別。levelnumber表示事件級別號,一般從1到10,1表示只dump結構頭部信息,