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

Oracle 診斷事件完整參考:分類、格式、常用事件代碼與實戰用法

     編輯:Oracle 資料庫基礎

事件語法標準格式

EVENT = "<事件名稱> <動作> <跟蹤項目> <範圍限定>"
  • IMMEDIATE 置首 = 無條件立即轉儲。
  • TRACE NAME "name" 固定第二/三位,其餘限定詞供內部開發用。
  • LEVEL 1-10 (10046 可用 12),10 代表全量資訊。
  • 輸出 Trace 檔位置:USER_DUMP_DEST 參數目錄。

四大事件分類

分類用途典型事件
轉儲類輸出記憶體/磁碟結構快照Control File, Datafile Header, System State
捕捉類攔截特定錯誤發生時的上下文ORA-04031, ORA-00600
改變執行路徑修改內核邏輯行為 (通常用於 Rule-based 修正)10269 (停用 SMON 空間合併)
跟蹤類SQL 執行詳細跟蹤 (效能調優核心)10046 (SQL Trace)

常用事件代碼速查表

分類事件名稱/代碼動作跟蹤項目範圍/Level
轉儲類IMMEDIATETRACEBLOCKDUMPLEVEL 區塊號
IMMEDIATETRACEREDOHDRLEVEL 10
IMMEDIATETRACEFILE_HDRSLEVEL 10
IMMEDIATETRACECONTROLFLEVEL 10 (全量) / 1 (僅頭部)
IMMEDIATETRACESYSTEMSTATELEVEL 10
捕捉類錯誤號 (如 4031)TRACEERRORSTACKLEVEL nr / FOREVER / OFF
錯誤號TRACEPROCESSSTATELEVEL nr
錯誤號TRACEHEAPDUMPLEVEL nr
改變路徑事件代碼 (如 10269)TRACECONTEXTFOREVER / LEVEL 10
跟蹤類10046TRACECONTEXTFOREVER / LEVEL n / OFF

實戰場景範例

1. 即時轉儲控制檔完整內容

ALTER SESSION SET EVENTS 'IMMEDIATE TRACE NAME CONTROLF LEVEL 10';

2. 捕捉 ORA-04031 發生時的錯誤堆疊與進程狀態

ALTER SYSTEM SET EVENTS '4031 TRACE NAME ERRORSTACK LEVEL 3, FOREVER';
ALTER SYSTEM SET EVENTS '4031 TRACE NAME PROCESSSTATE LEVEL 10, FOREVER';

3. 10046 SQL Trace 等級說明

  • Level 1:標準 SQL Trace (含等待事件)。
  • Level 4:+ Bind 變數值。
  • Level 8:+ Wait 事件詳細參數。
  • Level 12:Level 4 + 8 (最全)。
ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT FOREVER, LEVEL 12';

4. 關閉事件

ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT OFF';
ALTER SYSTEM SET EVENTS '4031 TRACE NAME ERRORSTACK OFF';

設定層級與持久化

  • Session 級:ALTER SESSION SET EVENTS ... (斷線失效)。
  • Instance 級:ALTER SYSTEM SET EVENTS ... (立即生效,重啟失效)。
  • 永久生效:在 init.ora / spfile 加入 EVENT = "...",重啟生效。

注意事項

  1. 事件機制屬內部診斷介面,**非文檔化功能**,生產環境謹慎使用,建議 SR 確認後再開啟。
  2. 大量 Trace 會消耗 I/O 與磁碟空間,設定 MAX_DUMP_FILE_SIZE 限制單檔大小。
  3. 11g+ 建議改用 DBMS_MONITOR / DBMS_SQLDIAG 等官方 API 替代手工事件。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved