簡要說來,跟蹤一個客戶程序發出的SQL主要分成下面幾步:
1) 識別要跟蹤的客戶端程序到數據庫的連接(後面都用session代替),主要找出能唯一識別一個session的sid與serial#.
2) 設定相應的參數,如打開時間開關(可以知道一個sql執行了多長時間),存放跟蹤數據的文件的位置、最大值。
3) 啟動跟蹤功能
4) 讓系統運行一段時間,以便可以收集到跟蹤數據
5) 關閉跟蹤功能
6) 格式化跟蹤數據,得到我們易於理解的跟蹤結果。
現在就每一步,給出詳細的說明:
1) 識別要跟蹤的客戶端程序到數據庫的數據庫連接
查詢session信息(在sql*plus中運行):
set linesize 190
col Machine format a30 wrap
col program for a40
col username format a15 wrap
set pagesize 500
select s.sid sid, s.SERIAL# "serial#", s.username, s.Machine, s.program,
p.spid ServPID, s.server
from v$session s, v$process p
where p.addr = s.paddr ;
如得到的一個查詢結果如下:
SID serial# USERNAME MacHINE PROGRAM SERVPID SERVER
---- ------- -------- ------------------ ------------- --------- ---------
8 3 SCOTT WORKGROUP\SUNNYXU SQLPLUS.EXE 388 DEDICATED
LOGON_TIME
------------------
2005.06.28 18:50:11
上面的結果中比較有用的列為:
sid, serial# : 這兩個值聯合起來唯一標識一個session