| 程序 | 用途 | 關鍵參數 |
| SERV_MOD_ACT_TRACE_ENABLE | 依服務/模組/動作啟用追蹤 | SERVICE_NAME, MODULE_NAME, ACTION_NAME |
| CLIENT_ID_TRACE_ENABLE | 依 Client ID 啟用追蹤 | CLIENT_ID |
| SESSION_TRACE_ENABLE | 依 SID/SERIAL# 啟用追蹤 | SESSION_ID, SERIAL_NUM, WAITS, BINDS |
| *_DISABLE | 對應停用程序 | 同上 |
注意:所有設定為 永久生效,針對符合條件的所有 Session(非僅當前)。模組/動作名稱源自應用程式 DBMS_APPLICATION_INFO.SET_MODULE/ACTION。
實際操作範例
-- 依服務與模組追蹤
EXEC DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE(SERVICE_NAME=>'testenv', MODULE_NAME=>'product_update');
-- 依用戶 Client ID 追蹤
EXEC DBMS_MONITOR.CLIENT_ID_TRACE_ENABLE(CLIENT_ID=>'kimberly');
-- 依特定 Session 追蹤 (從 V$SESSION 取得 SID/SERIAL#)
EXEC DBMS_MONITOR.SESSION_TRACE_ENABLE(SESSION_ID=>139, SERIAL_NUM=>53, WAITS=>TRUE, BINDS=>FALSE);
企業管理器 OEM 整合操作
- 進入 Performance 頁面 → Additional Monitoring Links → Top Consumers
- 切換 Top Services / Top Modules / Top Clients / Top Sessions 頁籤
- 勾選目標項目 → Enable SQL Trace
- 完成後 → Disable SQL Trace
- 點擊 View SQL Trace 取得整合指令

圖 1:OEM Top Consumers 頁面
trcsess:追蹤檔整合神器
共享伺服器模式下單一 Session 產生多個追蹤檔,trcsess 依條件合併:
trcsess OUTPUT="kfloss.trc" SERVICE="testenv" MODULE="product update" ACTION="batch insert"
支援條件:SESSION ID, CLIENT ID, SERVICE, MODULE, ACTION。輸出檔需雙引號並加 .trc 副檔名。
TKPROF 產出分析報告
tkprof kfloss.trc OUTPUT=kfloss_trace_report SORT=(EXEELA, PRSELA, FCHELA)
常用排序:EXEELA (執行耗時), PRSELA (解析耗時), FCHELA (擷取耗時)。
完整工作流程總結
- 設定 USER_DUMP_DEST / TRACEFILE_IDENTIFIER
- 透過 DBMS_MONITOR 或 OEM 啟用追蹤 (Service/Module/Client ID/Session)
- 重現問題操作
- 停用追蹤
- 使用 trcsess 整合相關追蹤檔
- TKPROF 產出可讀報告
- 分析高耗時 SQL、等待事件、綁定變數
最佳實務提醒
- 生產環境務必限制追蹤範圍 (Module/Client ID),避免全庫追蹤拖垮效能
- 追蹤完成立即停用,防止磁碟爆滿
- RAC 環境需在所有節點執行 trcsess 或集中式儲存追蹤檔
- 結合 ASH/AWR 報告進行綜合診斷
- 上一篇文章: Oracle 10g 虛擬私有資料庫 (VPD) 新特性深度解析:五大策略類型與列級安全
- 下一篇文章: 善用 Oracle 內建安全特性強化 PHP 應用:從資料庫層面落實權限控管
Copyright ©
程式碼之家 All Rights Reserved