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

Oracle 腳本啟動追蹤儲存程序完整教學:從建立到停止

     編輯:Oracle 資料庫基礎

一、腳本啟動追蹤的完整範例

透過 SQL Profiler 產生的腳本可自動化啟動儲存程序追蹤。以下為關鍵步驟解析:

1. 建立追蹤佇列

DECLARE @rc INT, @TraceID INT, @maxfilesize BIGINT;
SET @maxfilesize = 5;  -- 最大檔案大小 (MB)
EXEC @rc = sp_trace_create @TraceID OUTPUT, 0, N'c:\test', @maxfilesize, NULL;
IF (@rc != 0) GOTO error;

2. 設定追蹤事件

事件 ID 12 為 SQL:BatchStarting,欄位 1、12、14 分別對應 TextData、SPID、StartTime:

DECLARE @on BIT; SET @on = 1;
EXEC sp_trace_setevent @TraceID, 12, 1, @on;
EXEC sp_trace_setevent @TraceID, 12, 12, @on;
EXEC sp_trace_setevent @TraceID, 12, 14, @on;

3. 設定過濾條件

-- 過濾應用程式名稱
EXEC sp_trace_setfilter @TraceID, 10, 0, 7, N'SQL Profiler';
-- 過濾 CPU 時間 > 100ms
SET @intfilter = 100;
EXEC sp_trace_setfilter @TraceID, 22, 0, 4, @intfilter;
-- 過濾資料庫 ID = 1
SET @intfilter = 1;
EXEC sp_trace_setfilter @TraceID, 23, 1, 0, @intfilter;
-- 過濾資料庫名稱
EXEC sp_trace_setfilter @TraceID, 35, 1, 6, N'pubs';

4. 啟動追蹤

EXEC sp_trace_setstatus @TraceID, 1;  -- 1 = 啟動
SELECT TraceID = @TraceID;  -- 記錄 TraceID 供後續停止使用

二、最簡單產生追蹤腳本的方法

  1. 開啟 SQL Profiler,建立追蹤並設定所有選項。
  2. 啟動追蹤運行一段時間。
  3. 選單 檔案 → 匯出 → 指令碼追蹤定義,選擇適當版本。
  4. 開啟產生的 .sql 檔,修改 sp_trace_create 的檔案路徑參數。
  5. 需追蹤時直接執行該腳本,即可在背景自動運行,不佔用查詢分析器視窗。

三、常見問題與解決方案

1. 追蹤記錄非即時寫入

停止追蹤時,資料才會完整寫入追蹤檔案,中間過程不可即時查看。

2. 查看目前進行中的追蹤

SELECT * FROM ::fn_trace_getinfo(0);

3. 手動停止或關閉追蹤

-- 停止 (可稍後重新啟用)
EXEC sp_trace_setstatus @traceid = 1, @status = 0;

-- 關閉並釋放資源
EXEC sp_trace_setstatus @traceid = 1, @status = 2;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved