首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 追蹤事件與追蹤檔案完整指南:三類追蹤檔、兩種事件設定法

     編輯:Oracle 資料庫基礎

三類 Oracle 追蹤檔案

類型產生者儲存位置檔名格式內容
後台警示日誌背景進程BACKGROUND_DUMP_DESTSIDALRT.LOG (10g+ 為 alert_.log)啟動/關閉、建表空間、Alter 命令、Log Switch、錯誤訊息。故障首查檔案。
後台追蹤檔DBWR/LGWR/SMON 等BACKGROUND_DUMP_DESTsid_dbwr.trc, sid_smon.trc 等背景進程運行狀況、錯誤堆疊、內部錯誤 (ORA-600/7445)。
用戶追蹤檔用戶進程 (Server Process)USER_DUMP_DEST (11g+ 為 DIAGNOSTIC_DEST)ora_.trcSession 遇錯誤時產生;或手動啟用事件追蹤 (10046 SQL Trace 等)。

Oracle 追蹤事件:將內部結構轉儲至追蹤檔

透過事件機制,可將 SGA、Library Cache、Optimizer 決策等內部狀態寫入追蹤檔供分析。

兩種設定方法

方法一:init.ora / spfile 參數 (影響所有 Session,需重啟)

event = "event_number trace name event_name [forever,] [level level_number] : ..."
  • 多事件用冒號 : 分隔,或重複 event 參數
  • 修改後需重啟執行個體生效
  • 適用:長期監控、全系統級診斷

方法二:Session 層級 ALTER SESSION (僅影響當前 Session,即時生效)

ALTER SESSION SET EVENTS '[event_number|immediate] trace name event_name [forever] [, level level_number] : ...';
  • 多事件同樣用 : 分隔或重複執行
  • immediate 關鍵字:立即轉儲指定結構,**不可與 event_number、forever 同用**
  • 適用:臨時排查、特定 Session 問題重現

語法元素詳解

元素說明
event_number觸發轉儲的事件號。可為 Oracle 錯誤號 (發生該錯誤時追蹤) 或內部事件號 (10000~10999)。不可與 immediate 同用。
immediate僅用於 ALTER SESSION,立即執行轉儲,不等待事件觸發。不可與 event_number、forever 同用。
trace name event_name要轉儲的內部結構名稱,如 context、heapdump、library_cache、controlf 等。
forever持續追蹤直到 Session 結束或關閉事件。預設僅觸發一次。
level level_number追蹤層級/詳細程度,不同事件定義不同層級含義。

常用事件範例

目的命令
10046 SQL Trace (含等待/綁定)ALTER SESSION SET EVENTS '10046 trace name context forever, level 12';
10053 Optimizer TraceALTER SESSION SET EVENTS '10053 trace name context forever, level 1';
Library Cache DumpALTER SESSION SET EVENTS 'immediate trace name library_cache level 10';
Heap Dump (PGA/UGA)ALTER SESSION SET EVENTS 'immediate trace name heapdump level 0x20000001';
特定錯誤觸發追蹤ALTER SESSION SET EVENTS '1652 trace name errorstack level 3'; (ORA-01652 表空間不足)

實務建議

  1. **優先用 ALTER SESSION**:影響範圍可控,無需重啟,診斷完關閉 Session 即清理。
  2. **善用 immediate**:瞬時捕獲問題現場 (如 Library Cache 爭用、記憶體洩漏)。
  3. **追蹤檔分析工具**:TKPROF (10046)、TRCSESS (合併多檔)、ORADEBUG 進階控制。
  4. **11g+ 統一診斷目錄**:DIAGNOSTIC_DEST 取代 USER_DUMP_DEST/BACKGROUND_DUMP_DEST,ADR (Automatic Diagnostic Repository) 結構化管理。
  5. **生產環境謹慎使用高層級追蹤** (如 level 12),會產生大量 I/O 與磁碟佔用,建議限定時間窗或特定 Session。

結語

掌握三類追蹤檔定位與兩種事件設定法,是 DBA 從「看現象」進階到「看本質」的關鍵技能。善用 ALTER SESSION SET EVENTS 配合 immediate 與 trace name,能在不重啟、不影響他人的前提下精準捕獲內部狀態。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved