首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 診斷事件完整速查表:Memory Dump、File Dump 與系統狀態轉儲指令

     編輯:Oracle 資料庫相關知識

前言

Oracle 診斷事件 (Diagnostic Events) 可透過 ALTER SESSION/SYSTEM SET EVENTS 觸發各類記憶體、檔案、系統狀態的 Trace Dump,是效能調校、死鎖分析、損壞修復的核心工具。本文整理常用事件分類、層級參數與實戰指令。

一、Memory Dumps (記憶體區域轉儲)

1. Global Area (SGA/PGA/UGA)

ALTER SESSION SET EVENTS 'immediate trace name global_area level n';
-- Level: 1=PGA, 2=SGA, 4=UGA, 8=Indirect Memory (可組合加總)

2. Library Cache

ALTER SESSION SET EVENTS 'immediate trace name library_cache level n';
-- 1=統計, 2=Hash Histogram, 3=Object Handle, 4=Heap 0 結構

3. Row Cache (Data Dictionary Cache)

ALTER SESSION SET EVENTS 'immediate trace name row_cache level n';
-- 1=統計, 2=Hash Histogram, 8=Object 結構

4. Buffers (Buffer Cache 總覽)

ALTER SESSION SET EVENTS 'immediate trace name buffers level n';
-- 1=Buffer Header, 2=+Block Header, 3=+Block Contents,
-- 4=+Hash Chain, 8=+Users/Waiters (累加)

5. Buffer (單一 Block 所有版本)

ALTER SESSION SET EVENTS 'immediate trace name buffer level ';
-- RDBA: 該 Block 的 Relative DBA

6. Heap Dump (堆積記憶體)

ALTER SESSION SET EVENTS 'immediate trace name heapdump level ';
-- 摘要: 1=PGA, 2=SGA, 4=UGA, 8=Call (CGA), 16=User Call, 32=Large Call
-- 內容: 摘要值 + 1024 (如 1025=PGA 內容, 2050=SGA 內容...)

7. Sub Heap Dump (子堆積)

-- 9.0.1 前
ALTER SESSION SET EVENTS 'immediate trace name heapdump_addr level ';
-- addr+1 輸出內容

-- 9.2.0 後
ALTER SESSION SET EVENTS 'immediate trace name heapdump_addr level , addr ';
-- level: 1=摘要, 2=內容

8. Process State / System State / Error Stack

ALTER SESSION SET EVENTS 'immediate trace name processstate level n';
ALTER SESSION SET EVENTS 'immediate trace name systemstate level n';
-- Level: 10=完整系統狀態 (含所有 Process、Enqueue、Latch、Buffer 等)

ALTER SESSION SET EVENTS 'immediate trace name errorstack level n';
-- 0=Error Stack, 1=+Call Stack, 2=+Process State, 3=+Context Area

9. Hang Analyze (懸鎖分析)

ALTER SESSION SET EVENTS 'immediate trace name hanganalyze level n';
-- Level 3/4 可輸出等待鏈圖,分析 Hang 根因

10. Workarea / Latches / Events / Locks

ALTER SESSION SET EVENTS 'immediate trace name workareatab_dump level n'; -- 1=SGA, 2=摘要, 3=詳細
ALTER SESSION SET EVENTS 'immediate trace name latches level n';          -- 1=Latch 資訊, 2=統計
ALTER SESSION SET EVENTS 'immediate trace name events level n';          -- 1=Session, 2=Process, 3=System
ALTER SESSION SET EVENTS 'immediate trace name locks level n';

11. Shared Server / Background Messages

ALTER SESSION SET EVENTS 'immediate trace name shared_server_state level n'; -- n=1~14
ALTER SESSION SET EVENTS 'immediate trace name bg_messages level ';

二、File Dumps (檔案結構轉儲)

1. Data Block Dump

-- 8i 以前
ALTER SESSION SET EVENTS 'immediate trace name blockdump level ';

-- 8i 後 (需 SYSDBA)
ALTER SYSTEM DUMP DATAFILE  BLOCK ;
ALTER SYSTEM DUMP DATAFILE  BLOCK MIN  BLOCK MAX ;

2. Index Tree Dump

ALTER SESSION SET EVENTS 'immediate trace name treedump level ';
-- 分析 B-tree 結構、葉塊分佈

3. Undo Segment Header / Undo Block

ALTER SYSTEM DUMP UNDO HEADER '';
ALTER SYSTEM DUMP UNDO BLOCK '' XID   ;

4. File Header / Control File / Redo Log Header

ALTER SESSION SET EVENTS 'immediate trace name file_hdrs level n';
-- 1=Controlfile 中檔頭, 2=+檔頭, 3=+Datafile 檔頭, 10=Level 3

ALTER SESSION SET EVENTS 'immediate trace name controlf level n';
-- 1=檔頭, 2=+DB/Checkpoint, 3=+Reuse Section, 10=Level 3

ALTER SESSION SET EVENTS 'immediate trace name redohdr level n';
-- 1=Controlfile 中 Redo 資訊, 2=+檔頭, 3=+Logfile 檔頭, 10=Level 3

5. Redo Log Dump (完整日誌內容)

ALTER SYSTEM DUMP LOGFILE '';
-- 可加過濾條件:
SCN MIN  SCN MAX 
TIME MIN 

6. Log History

ALTER SESSION SET EVENTS 'immediate trace name loghist level n';
-- 1=最早/最晚項目, 2^n=倒數 2^n 個項目

三、輸出檔案位置與命名

  • User Trace:USER_DUMP_DEST (預設 $ORACLE_BASE/diag/rdbms///trace),檔名 _ora_.trc
  • Background Trace:BACKGROUND_DUMP_DEST,檔名 __.trc
  • Core Dump:作業系統核心目錄 (需 ulimit -c unlimited)

四、實戰建議

  1. 最小權限原則:僅在需要時開啟事件,分析完成即關閉 (ALTER SESSION SET EVENTS '... off';)
  2. Level 選擇:從低 Level 開始,避免產生超大 Trace 檔佔滿磁碟。
  3. 配合 Trace File Analyzer (TFA):自動收集、封裝、上傳至 MOS。
  4. 生產環境謹慎使用:Systemstate Level 10、Hanganalyze 可能短暫凍結實例,建議維護窗口執行。

結語

熟練掌握診斷事件指令,能在關鍵時刻快速取得 Oracle 內部狀態證據,將疑難雜症排查時間從小時縮短至分鐘。

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