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

Oracle 10g SQL 追蹤新機制:DBMS_MONITOR 與 trcsess 完整實戰指南

     編輯:Oracle 資料庫基礎

背景痛點

傳統 10046 事件追蹤在連線池、多層架構、RAC 環境下極難關聯單一用戶會話:單一請求可能跨多個進程甚至實例,產生碎片化追蹤檔。Oracle 10g 引入 DBMS_MONITOR 套件與 trcsess 工具,實現端到端會話追蹤與檔案整合。

環境準備


-- 變更追蹤檔目錄
ALTER SESSION SET USER_DUMP_DEST = 'c:\kflosstrace';
-- 加入辨識標記
ALTER SESSION SET TRACEFILE_IDENTIFIER = 'kfloss_test';

DBMS_MONITOR 核心 API

注意:所有設定為 永久生效,針對符合條件的所有 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 整合操作

  1. 進入 Performance 頁面 → Additional Monitoring Links → Top Consumers
  2. 切換 Top Services / Top Modules / Top Clients / Top Sessions 頁籤
  3. 勾選目標項目 → Enable SQL Trace
  4. 完成後 → Disable SQL Trace
  5. 點擊 View SQL Trace 取得整合指令

OEM Top Consumers 頁面

圖 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 (擷取耗時)。

完整工作流程總結

  1. 設定 USER_DUMP_DEST / TRACEFILE_IDENTIFIER
  2. 透過 DBMS_MONITOR 或 OEM 啟用追蹤 (Service/Module/Client ID/Session)
  3. 重現問題操作
  4. 停用追蹤
  5. 使用 trcsess 整合相關追蹤檔
  6. TKPROF 產出可讀報告
  7. 分析高耗時 SQL、等待事件、綁定變數

最佳實務提醒

  • 生產環境務必限制追蹤範圍 (Module/Client ID),避免全庫追蹤拖垮效能
  • 追蹤完成立即停用,防止磁碟爆滿
  • RAC 環境需在所有節點執行 trcsess 或集中式儲存追蹤檔
  • 結合 ASH/AWR 報告進行綜合診斷
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
程序用途關鍵參數
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對應停用程序同上