三類 Oracle 追蹤檔案
| 類型 | 產生者 | 儲存位置 | 檔名格式 | 內容 |
| 後台警示日誌 | 背景進程 | BACKGROUND_DUMP_DEST | SIDALRT.LOG (10g+ 為 alert_.log) | 啟動/關閉、建表空間、Alter 命令、Log Switch、錯誤訊息。故障首查檔案。 |
| 後台追蹤檔 | DBWR/LGWR/SMON 等 | BACKGROUND_DUMP_DEST | sid_dbwr.trc, sid_smon.trc 等 | 背景進程運行狀況、錯誤堆疊、內部錯誤 (ORA-600/7445)。 |
| 用戶追蹤檔 | 用戶進程 (Server Process) | USER_DUMP_DEST (11g+ 為 DIAGNOSTIC_DEST) | ora_.trc | Session 遇錯誤時產生;或手動啟用事件追蹤 (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 Trace | ALTER SESSION SET EVENTS '10053 trace name context forever, level 1'; |
| Library Cache Dump | ALTER 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 表空間不足) |
實務建議
- **優先用 ALTER SESSION**:影響範圍可控,無需重啟,診斷完關閉 Session 即清理。
- **善用 immediate**:瞬時捕獲問題現場 (如 Library Cache 爭用、記憶體洩漏)。
- **追蹤檔分析工具**:
TKPROF (10046)、TRCSESS (合併多檔)、ORADEBUG 進階控制。
- **11g+ 統一診斷目錄**:
DIAGNOSTIC_DEST 取代 USER_DUMP_DEST/BACKGROUND_DUMP_DEST,ADR (Automatic Diagnostic Repository) 結構化管理。
- **生產環境謹慎使用高層級追蹤** (如 level 12),會產生大量 I/O 與磁碟佔用,建議限定時間窗或特定 Session。
結語
掌握三類追蹤檔定位與兩種事件設定法,是 DBA 從「看現象」進階到「看本質」的關鍵技能。善用 ALTER SESSION SET EVENTS 配合 immediate 與 trace name,能在不重啟、不影響他人的前提下精準捕獲內部狀態。