ALTER SESSION SET TIMED_STATISTICS = TRUE;
ALTER SESSION SET MAX_DUMP_FILE_SIZE = UNLIMITED;
ALTER SESSION SET TRACEFILE_IDENTIFIER = 'POX20240115';
ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT FOREVER, LEVEL 12';
-- 業務代碼執行區間
ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT OFF';
Level 解析:0=關閉、1=基礎、4=+綁定變量、8=+等待事件、12=1+4+8(推薦)。
EXEC DBMS_MONITOR.SESSION_TRACE_ENABLE(
session_id => :sid, serial_num => :serial,
waits => TRUE, binds => FALSE);
-- 業務運行
EXEC DBMS_MONITOR.SESSION_TRACE_DISABLE(:sid, :serial);
EXEC SYS.DBMS_SYSTEM.SET_EV(:sid, :serial, 10046, 8, '');
-- 業務運行
EXEC SYS.DBMS_SYSTEM.SET_EV(:sid, :serial, 10046, 0, '');
SELECT sid, serial#, username, program FROM v$session WHERE ...;
USER_DUMP_DEST 或 DIAGNOSTIC_DEST/trace;TRACEFILE_IDENTIFIER + SPID(OS 進程號);SELECT p.spid FROM v$process p, v$session s WHERE p.addr = s.paddr AND s.sid = :sid AND s.serial# = :serial;trcsess output=merged.trc session=123.456 *.trc
-- 或按模塊名
trcsess output=merged.trc module='ORDER_ENTRY' *.trc
將分散在多個共享服務器進程的追蹤文件合併為單一文件,便於分析。
tkprof merged.trc merged.txt EXPLAIN=user/pass SYS=NO SORT=EXEELA,FCHELA
關鍵輸出欄位:
| 欄位 | 含義 |
|---|---|
| PARSE | 解析次數/CPU/經過時間 |
| EXEC | 執行次數/CPU/經過時間/行數 |
| FETCH | 提取次數/CPU/經過時間/行數 |
| WAIT | 等待事件統計 |
MAX_DUMP_FILE_SIZE 防止截斷;TRACEFILE_IDENTIFIER 快速定位;