本文內容為 Microsoft SQL Server 的 Profiler 追蹤腳本產生與管理,非 Oracle 資料庫功能。原文標題標示 Oracle 可能為誤植。Oracle 對應功能請參考 DBMS_MONITOR、DBMS_TRACE 或 10046 事件。
/****************************************************/
/* Created by: SQL Profiler */
/* Date: 2004/06/19 16:50:05 */
/****************************************************/
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;
DECLARE @on BIT = 1;
-- 事件 12: SQL:BatchStarting
EXEC sp_trace_setevent @TraceID, 12, 1, @on; -- TextData
EXEC sp_trace_setevent @TraceID, 12, 12, @on; -- SPID
EXEC sp_trace_setevent @TraceID, 12, 14, @on; -- StartTime
-- 過濾器
DECLARE @intfilter INT, @bigintfilter BIGINT;
EXEC sp_trace_setfilter @TraceID, 10, 0, 7, N'SQL Profiler'; -- ApplicationName
SET @intfilter = 100;
EXEC sp_trace_setfilter @TraceID, 22, 0, 4, @intfilter; -- CPU >= 100
SET @intfilter = 1;
EXEC sp_trace_setfilter @TraceID, 23, 1, 0, @intfilter; -- DatabaseID = 1
EXEC sp_trace_setfilter @TraceID, 35, 1, 6, N'pubs'; -- DatabaseName = pubs
-- 啟動追蹤
EXEC sp_trace_setstatus @TraceID, 1;
SELECT TraceID = @TraceID;
GOTO finish;
error: SELECT ErrorCode = @rc;
finish: GO
sp_trace_create 的檔案路徑參數SELECT * FROM ::fn_trace_getinfo(0)EXEC sp_trace_setstatus @traceid=1, @status=0EXEC sp_trace_setstatus @traceid=1, @status=2| SQL Server | Oracle 對應 |
|---|---|
| sp_trace_create | DBMS_MONITOR.SESSION_TRACE_ENABLE / 10046 Event |
| sp_trace_setevent | WAITS/BINDS 參數控制 |
| sp_trace_setfilter | MODULE/ACTION/CLIENT_ID 過濾 |
| fn_trace_getinfo | V$SESSION / DBA_ENABLED_TRACES |
| trc 檔案 | .trc 檔案 (USER_DUMP_DEST) |
| Profiler GUI | OEM / SQL Developer / Trace Analyzer |