Oracle SQL語句追蹤
1 SQL語句追蹤
追蹤SQL語句的執行過程需要在Oracle服務器端進行,Oracle服務器端會檢測並記錄訪問進程所執行的所有SQL語句。下面使用的命令都是在命令行模式下執行的,所以我們需要使用命令行以管理員身份登陸Oracle數據庫。下面就是該工具使用的詳細步驟。
首先要追中SQL語句,我們需要確定追蹤客戶端進程的會話ID,下面命令枚舉了當前服務器所有訪問進程會話ID和串口,然后選擇需要檢測的會話ID和串口。
Select username, sid, serial# from v$session where username is not null;
然后針對選中的會話ID和串口進行SQL語句追蹤,如下命令所示。
EXECUTE sys.dbms_system.set_sql_trace_in_session(10, 2642, TRUE);
開始追蹤SQL語句后,我們可以在客戶端進行操作,而這些操作過程使用的SQL語句都將被記錄下來,直到我們結束SQL語句追蹤。
最后客戶端操作完成之后,使用下面命令便可以結束SQL語句追蹤。
EXECUTE sys.dbms_system.set_sql_trace_in_session(10, 2642, FALSE);
追中結束后Oracle服務端文件夾下會產生一個最新的.trc后綴的文件,我們可以使用Search Everything工具查找最近時間生產的.trc文件,然后使用tkprof工具對該文件進行解析。
2 TRC文件解析
解析生成的.trc文件,需要使用tkprof工具,該工具有非常多的復雜參數可供使用,如果不做復雜要求,可以使用下面簡單的命令將.trc文件輸出成文本文件。
解析命令如下:
tkprof sqlplus_007.trc out.txt
sqlplus_007.trc為數據追蹤文件
out.txt 為輸出格式化文件
打開out.txt文件,便可以查閱到SQL語句的執行情況。
