跟蹤客戶端執行的SQL
-- 識別要跟蹤的客戶端程式到資料庫的資料庫連線
-- 只有DEDICATED模式下,跟蹤才有效
column machine format a30
column program for a40
column username format a15
select
s.sid,
s.serial#,
s.username,
/*s.machine,
s.program,
p.spid,
s.server,*/
to_char(s.logon_time,'yyyy-mm-dd hh24:mi:ss') logon_time
from
v$session s,
v$process p
where
p.addr=s.paddr and
s.username is not null
/
-- 設定相應的引數
-- 一下引數最好在session級別啟用,否則效能影響太大
-- 只有跟蹤的session再次發出sql語句後,才會產生trc檔案
-- timed_statistics
-- 收集跟蹤資訊時,是否將收集時間資訊,如果收集,則可以知道一個sql的各個執行階段耗費的時間情況
alter session set timed_statistics=true;
-- user_dump_dest
-- 存放跟蹤資料的檔案的位置
-- 只能在system級別作修改,所以一般用預設路徑
show parameter user_dump_dest
-- max_dump_file_size
-- 放跟蹤資料的檔案的最大值,防止由於無意的疏忽,使跟蹤資料的檔案佔用整個硬碟,影響系統的正常執行
alter session set max_dump_file_size=2048000000;
-- 啟動跟蹤功能
alter session set sql_trace = true;
-- 設定其他session
begin
exec dbms_system.set_int_param_in_session(sid,serial#,'max_dump_file_size',2048000000);
exec dbms_system.set_bool_param_in_session(sid,serial#,'timed_statistics',true);
exec dbms_system.set_sql_trace_in_session(sid,serial#,true);
end;
/
-- 讓系統執行一段時間,收集被跟蹤session中正在執行的sql效能資料
select * from emp;
-- 關閉跟蹤功能
alter session set sql_trace = false;
-- 格式化跟蹤資料
tkprof /udump/xe_ora_4687.trc out.log
-- 直接輸入tkprof,顯示幫助資訊
-- 計算sql消耗資源時,也要將recursive calls考慮進去
-- tkprof引數介紹
-- tracefile --- 指定輸入檔案,即oracle產生的trace檔案,該檔案中可以只包含一個session的跟蹤資訊,也可以包含系統中所有session的資訊(此時需要在系統級進行跟蹤)
-- outputfile --- 指定輸出檔案
-- explain --- explain=go/go,利用哪個使用者對trace檔案中的sql進行分析,從而得到該sql語句的執行計劃,這也說明在tracefile中並沒有各個sql語句的執行計劃,只是在執行tkprof程式時才將tracefile檔案中的sql語句用explian引數指定的使用者連線到資料庫,然後運用EXPLAIN PLAN命令生成sql的執行計劃,這個使用者一般是你的程式中連線資料庫的使用者
-- table --- 在對sql語句進行分析時,將產生的執行計劃暫時存放到該表中。一般不需要該引數,這樣當表不存在時,tkprof會自動建立相應的表,並在分析完之後,將建立的表自動刪除。如果要指定自定義的表,該表的結構必須與utlxplan.sql檔案中指定的表的結構一樣。我一般不設定這個引數,讓其採用預設的表名,並自動建立、刪除
-- sys --- 是否對sys使用者執行的sql語句或被跟蹤session產生的recursive SQL也進行分析,並將分析結果放到輸出檔案中。預設值為YES。我一般設為NO,這樣輸出檔案中只包含我發出的sql語句,而不包含系統產生的sql。
-- sort --- 按照指定的排序選項(條件)對格式化好的sql語句進行降序排列,然後存放到輸出檔案中。可以將多個排序選項組合起來,如果沒有指定排序選項,則按照使用sql的先後順序。
-- print --- 只列出指定數量的已排序的sql語句,排序的條件參見SORT引數。如果忽略此引數,tkprof將跟蹤檔案中的所有的sql語句及其相關的分析資料存放到輸出檔案中。print與sort引數組合在一起,可以實現,找出某一階段耗費cpu最多的前n個sql,找出某一階段讀硬碟最多的前n個sql等等。
-- insert --- 建立一個sql指令碼檔案,裡面包含create table 與insert語句。利用這個指令碼檔案建立一個表及插入資料後,可以得到跟蹤檔案中所有sql語句(包含recursive SQL)的統計資訊。利用這些資訊,也可以發現有問題的sql。即是格式化好的輸出檔案中有關sql效能資訊資料的資料庫表的形式。我一般不用該引數
-- record --- 建立一個包含客戶端程式發出的所有的sql語句的指令碼檔案。注意,並不包含recursive SQL。可以窺探別人程式是如何訪問資料庫的,從而對了解程式的訪問流程。此時,最好不用sort引數,這樣就可以按先後發出的順序的到sql
-- aggregate --- 把同一sql的資料綜合統計起來,只輸出一此統計資訊,預設為yes,指定為no時,每條sql會輸出多次統計資訊
-- waits --- 輸出任何等待事件的統計資訊,預設為yes
-- 只有DEDICATED模式下,跟蹤才有效
column machine format a30
column program for a40
column username format a15
select
s.sid,
s.serial#,
s.username,
/*s.machine,
s.program,
p.spid,
s.server,*/
to_char(s.logon_time,'yyyy-mm-dd hh24:mi:ss') logon_time
from
v$session s,
v$process p
where
p.addr=s.paddr and
s.username is not null
/
-- 設定相應的引數
-- 一下引數最好在session級別啟用,否則效能影響太大
-- 只有跟蹤的session再次發出sql語句後,才會產生trc檔案
-- timed_statistics
-- 收集跟蹤資訊時,是否將收集時間資訊,如果收集,則可以知道一個sql的各個執行階段耗費的時間情況
alter session set timed_statistics=true;
-- user_dump_dest
-- 存放跟蹤資料的檔案的位置
-- 只能在system級別作修改,所以一般用預設路徑
show parameter user_dump_dest
-- max_dump_file_size
-- 放跟蹤資料的檔案的最大值,防止由於無意的疏忽,使跟蹤資料的檔案佔用整個硬碟,影響系統的正常執行
alter session set max_dump_file_size=2048000000;
-- 啟動跟蹤功能
alter session set sql_trace = true;
-- 設定其他session
begin
exec dbms_system.set_int_param_in_session(sid,serial#,'max_dump_file_size',2048000000);
exec dbms_system.set_bool_param_in_session(sid,serial#,'timed_statistics',true);
exec dbms_system.set_sql_trace_in_session(sid,serial#,true);
end;
/
-- 讓系統執行一段時間,收集被跟蹤session中正在執行的sql效能資料
select * from emp;
-- 關閉跟蹤功能
alter session set sql_trace = false;
-- 格式化跟蹤資料
tkprof /udump/xe_ora_4687.trc out.log
-- 直接輸入tkprof,顯示幫助資訊
-- 計算sql消耗資源時,也要將recursive calls考慮進去
-- tkprof引數介紹
-- tracefile --- 指定輸入檔案,即oracle產生的trace檔案,該檔案中可以只包含一個session的跟蹤資訊,也可以包含系統中所有session的資訊(此時需要在系統級進行跟蹤)
-- outputfile --- 指定輸出檔案
-- explain --- explain=go/go,利用哪個使用者對trace檔案中的sql進行分析,從而得到該sql語句的執行計劃,這也說明在tracefile中並沒有各個sql語句的執行計劃,只是在執行tkprof程式時才將tracefile檔案中的sql語句用explian引數指定的使用者連線到資料庫,然後運用EXPLAIN PLAN命令生成sql的執行計劃,這個使用者一般是你的程式中連線資料庫的使用者
-- table --- 在對sql語句進行分析時,將產生的執行計劃暫時存放到該表中。一般不需要該引數,這樣當表不存在時,tkprof會自動建立相應的表,並在分析完之後,將建立的表自動刪除。如果要指定自定義的表,該表的結構必須與utlxplan.sql檔案中指定的表的結構一樣。我一般不設定這個引數,讓其採用預設的表名,並自動建立、刪除
-- sys --- 是否對sys使用者執行的sql語句或被跟蹤session產生的recursive SQL也進行分析,並將分析結果放到輸出檔案中。預設值為YES。我一般設為NO,這樣輸出檔案中只包含我發出的sql語句,而不包含系統產生的sql。
-- sort --- 按照指定的排序選項(條件)對格式化好的sql語句進行降序排列,然後存放到輸出檔案中。可以將多個排序選項組合起來,如果沒有指定排序選項,則按照使用sql的先後順序。
-- print --- 只列出指定數量的已排序的sql語句,排序的條件參見SORT引數。如果忽略此引數,tkprof將跟蹤檔案中的所有的sql語句及其相關的分析資料存放到輸出檔案中。print與sort引數組合在一起,可以實現,找出某一階段耗費cpu最多的前n個sql,找出某一階段讀硬碟最多的前n個sql等等。
-- insert --- 建立一個sql指令碼檔案,裡面包含create table 與insert語句。利用這個指令碼檔案建立一個表及插入資料後,可以得到跟蹤檔案中所有sql語句(包含recursive SQL)的統計資訊。利用這些資訊,也可以發現有問題的sql。即是格式化好的輸出檔案中有關sql效能資訊資料的資料庫表的形式。我一般不用該引數
-- record --- 建立一個包含客戶端程式發出的所有的sql語句的指令碼檔案。注意,並不包含recursive SQL。可以窺探別人程式是如何訪問資料庫的,從而對了解程式的訪問流程。此時,最好不用sort引數,這樣就可以按先後發出的順序的到sql
-- aggregate --- 把同一sql的資料綜合統計起來,只輸出一此統計資訊,預設為yes,指定為no時,每條sql會輸出多次統計資訊
-- waits --- 輸出任何等待事件的統計資訊,預設為yes
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22558114/viewspace-1097816/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用sqltrace跟蹤session執行的sqlSQLSession
- mysql如何跟蹤執行的sql語句MySql
- 配置SQLNET.ORA檔案跟蹤客戶端連線SQL客戶端
- SQLServer進行SQL跟蹤SQLServer
- 跟蹤執行命令T
- MYSQL sql執行過程的一些跟蹤分析(一)MySql
- 使用SQL_TEACE的跟蹤檔案分析執行計劃SQL
- Oracle執行語句跟蹤 使用sql trace實現語句追蹤OracleSQL
- Trace the connections being made to the Oracle database-客戶端跟蹤連線OracleDatabase客戶端
- 跨平臺的 SQL 客戶端SQL客戶端
- 20180427通過SQL_ID查出執行該SQL客戶端IPSQL客戶端
- Oracle 開啟SQL跟蹤執行SET AUTOTRACE ON命令時出錯OracleSQL
- 藉助10053跟蹤事件理解SQL執行過程事件SQL
- Squirrel: 通用SQL、NoSQL客戶端UISQL客戶端
- SQL 的跟蹤方法traceSQL
- MYSQL sql執行過程的一些跟蹤分析(二.mysql優化器追蹤分析)MySql優化
- 走近原始碼:Redis命令執行過程(客戶端)原始碼Redis客戶端
- 利用執行緒池給客戶端傳檔案執行緒客戶端
- 在網頁如何呼叫客戶端的可執行檔案網頁客戶端
- 跟蹤 sql 的trace檔案SQL
- 跟蹤使用者的SQLSQL
- git的跟蹤分支和遠端跟蹤分支學習筆記Git筆記
- VNC客戶端是Windows,VNC客戶端是Windows如何進行操作VNC客戶端Windows
- Windows下同時安裝執行多個版本的jmeter客戶端WindowsJMeter客戶端
- 會話級SQL跟蹤會話SQL
- 會話的跟蹤以及執行計劃的獲取會話
- 【MySQL】如何對SQL語句進行跟蹤(trace)?MySql
- 使用DBMS_TRACE對PL/SQL進行跟蹤SQL
- 0624使用10035事件跟蹤無法執行的sql語句事件SQL
- 基於行跟蹤的ROWDEPENDENCIES實現資訊變化跟蹤
- 通過NETWORK_LINK在客戶端執行EXPDP客戶端
- 如何在 Windows 作業系統中執行 Docker 客戶端Windows作業系統Docker客戶端
- 透過NETWORK_LINK在客戶端執行EXPDP客戶端
- oracle中跟蹤sql執行計劃的方法OracleSQL
- socket實現服務端多執行緒,客戶端重複輸入服務端執行緒客戶端
- Steam客戶端發現遠端程式碼執行漏洞:已放補丁客戶端
- 「Oracle」客戶端 PL/SQL DEVELOPER 安裝使用Oracle客戶端SQLDeveloper
- Oracle資料庫跟蹤SQLOracle資料庫SQL