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

Oracle 腳本啟動追蹤存儲過程:SQL Profiler 產生腳本、sp_trace_create 完整參數與管理指令

     編輯:Oracle 資料庫相關知識

使用 SQL Profiler 產生追蹤腳本,再以腳本方式啟動/管理 Server 端追蹤,適用於生產環境無人值守收集效能數據。

1. 完整追蹤腳本範例 (SQL Profiler 產生)

/*******************************************/
/* Created by: SQL Profiler                */
/* Date: 2004/06/19 16:50:05               */
/*******************************************/
DECLARE @rc INT, @TraceID INT, @maxfilesize BIGINT;
SET @maxfilesize = 5;  -- MB
-- 請將 InsertFileNameHere 替換為實際路徑 (如 C:\MyFolder\MyTrace),.trc 會自動附加
EXEC @rc = sp_trace_create @TraceID OUTPUT, 0, N'C:\test', @maxfilesize, NULL;
IF (@rc != 0) GOTO error;

DECLARE @on BIT; SET @on = 1;
-- 設定事件 (12=SP:StmtCompleted, 欄位 1=TextData, 12=SPID, 14=StartTime)
EXEC sp_trace_setevent @TraceID, 12, 1, @on;
EXEC sp_trace_setevent @TraceID, 12, 12, @on;
EXEC sp_trace_setevent @TraceID, 12, 14, @on;

-- 設定過濾器
DECLARE @intfilter INT, @bigintfilter BIGINT;
EXEC sp_trace_setfilter @TraceID, 10, 0, 7, N'SQL Profiler'; -- 排除 Profiler 自身
SET @intfilter = 100;  -- CPU > 100ms
EXEC sp_trace_setfilter @TraceID, 22, 0, 4, @intfilter;
SET @intfilter = 1;    -- 僅資料庫 ID 1
EXEC sp_trace_setfilter @TraceID, 23, 1, 0, @intfilter;
EXEC sp_trace_setfilter @TraceID, 35, 1, 6, N'pubs';     -- 僅 pubs 資料庫

-- 啟動追蹤
EXEC sp_trace_setstatus @TraceID, 1;
SELECT TraceID = @TraceID;  -- 記錄 TraceID 供後續管理
GOTO finish;

error: SELECT ErrorCode = @rc;
finish: GO

2. 最簡產生腳本法

  1. SQL Profiler 手動設定事件/過濾器 → 啟動追蹤。
  2. 檔案 → 匯出 → 追蹤定義 → 選版本 → 產生 .sql 腳本。
  3. 編輯腳本中 sp_trace_create 的檔案路徑參數。
  4. 需追蹤時執行腳本即可啟動,背景自動執行。

3. 已知限制與管理指令

  • 追蹤資料非即時寫入檔案,停止時才可能完整落盤。
  • 查看現有追蹤:SELECT * FROM ::fn_trace_getinfo(0)。
  • 停止追蹤:EXEC sp_trace_setstatus @traceid=1, @status=0 (暫停,可重啟)。
  • 關閉追蹤:EXEC sp_trace_setstatus @traceid=1, @status=2 (釋放資源)。
  • 可在 sp_trace_create 設定 @stoptime 自動停止。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved