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

Oracle Database 10g SQL 追蹤新紀元:DBMS_MONITOR 與 trcsess 整合分析實戰

     編輯:Oracle 資料庫相關知識

挑戰:連線池環境下的追蹤困境

多層架構中,單一用戶請求可能跨多進程、甚至跨實例,傳統追蹤極難串聯。

解決方案:DBMS_MONITOR + trcsess

1. 追蹤檔案位置與標識

ALTER SESSION SET user_dump_dest = 'c:\trace';
ALTER SESSION SET tracefile_identifier = 'my_test';

2. DBMS_MONITOR 核心 API

  • SERV_MOD_ACT_TRACE_ENABLE:依服務名、模組名、動作名追蹤
  • CLIENT_ID_TRACE_ENABLE:依 Client ID 追蹤
  • SESSION_TRACE_ENABLE:依 SID/SERIAL# 追蹤
  • 所有設定為永久生效,非僅當前 Session

3. 實戰範例

-- 依服務與模組
EXEC dbms_monitor.serv_mod_act_trace_enable('testenv','product_update');

-- 依 Client ID
EXEC dbms_monitor.client_id_trace_enable('kimberly');

-- 依 Session(從 V$SESSION 取得 SID/SERIAL#)
EXEC dbms_monitor.session_trace_enable(139, 53, TRUE, FALSE);

4. Enterprise Manager 圖形化操作

Performance → Top Consumers → Top Services/Modules/Actions/Clients/Sessions → 勾選項目 → Enable SQL Trace

5. trcsess 整合追蹤檔

trcsess output="kfloss.trc" service="testenv" module="product update" action="batch insert"
-- 必須雙引號包裹字串,副檔名 .trc

6. TKPROF 產出報表

tkprof kfloss.trc output=kfloss_report SORT=(EXEELA,PRSELA,FCHELA)

關鍵提醒

  • 追蹤結束務必 Disable,否則持續產生大量追蹤檔
  • 共用伺服器模式下 trcsess 價值最大(單一 Session 產生多追蹤檔)
  • WAITS=TRUE, BINDS=FALSE 為預設,可依需求調整
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved