通過10046與tkprof瞭解SQL執行
首先,開啟10046事件
執行SQL語句,然後檢視跟蹤日誌檔案。
獲取Trace檔案路徑。
或者設定跟蹤檔案標識
alter session set tracefile_identifier='優化';
使用tkprof格式化Trace檔案
可以看到執行計劃的每一步的資源消耗情況,便於定位問題。
其中tkprof的選項
參考:
http://www.askmaclean.com/archives/maclean-tech-tkprof-10046.html
-
--開啟10046
-
alter session set events '10046 trace name context forever,level 12';
-
--關閉10046
-
alter session set events '10046 trace name context off';
-
-
--或者
-
exec dbms_system.set_ev(sid,serial#,10046,12,'go');
- exec dbms_system.set_ev(sid,serial#,10046,0,'go');
執行SQL語句,然後檢視跟蹤日誌檔案。
獲取Trace檔案路徑。
-
--檢視當前使用的Trace檔案
-
SELECT a.VALUE || b.symbol || c.instance_name || '_ora_' || d.spid || '.trc' AS trace_file
-
FROM (
-
SELECT VALUE
-
FROM v$parameter
-
WHERE NAME = 'user_dump_dest'
-
) a, (
-
SELECT SUBSTR(VALUE, -6, 1) AS symbol
-
FROM v$parameter
-
WHERE NAME = 'user_dump_dest'
-
) b, (
-
SELECT instance_name
-
FROM v$instance
-
) c, (
-
SELECT spid
-
FROM v$session s, v$process p, v$mystat m
-
WHERE s.paddr = p.addr
-
AND s.SID = m.SID
-
AND m.statistic# = 0
-
) d
- ;
alter session set tracefile_identifier='優化';
使用tkprof格式化Trace檔案
- tkprof mvbox_ora_13810.trc tkprof.txt sys=no sort=fchela
可以看到執行計劃的每一步的資源消耗情況,便於定位問題。
其中tkprof的選項
- print=integer 只列出前幾個SQL語句,integer 為指定的數量,例如print=10
- sys=no 不列出以SYS使用者執行的語句
- sort=option 排序選項, 選項列表如下:
- prscnt number of times parse was called
- prscpu cpu time parsing
- prsela elapsed time parsing
- prsdsk number of disk reads during parse
- prsqry number of buffers for consistent read during parse
- prscu number of buffers for current read during parse
- prsmis number of misses in library cache during parse
- execnt number of execute was called
- execpu cpu time spent executing
- exeela elapsed time executing
- exedsk number of disk reads during execute
- exeqry number of buffers for consistent read during execute
- execu number of buffers for current read during execute
- exerow number of rows processed during execute
- exemis number of library cache misses during execute
- fchcnt number of times fetch was called
- fchcpu cpu time spent fetching
- fchela elapsed time fetching
- fchdsk number of disk reads during fetch
- fchqry number of buffers for consistent read during fetch
- fchcu number of buffers for current read during fetch
- fchrow number of rows fetched
- userid userid of user that parsed the cursor
參考:
http://www.askmaclean.com/archives/maclean-tech-tkprof-10046.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-1154766/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- sql_trace、10046、10053、tkprofSQL
- 通過 HelloWorld 瞭解 Java 程式執行過程以及執行時記憶體Java記憶體
- Spark SQL 教程: 通過示例瞭解 Spark SQLSparkSQL
- SQL TRACE和TKPROF,10046的使用步驟SQL
- 使用SQL TRACE和TKPROF觀察SQL語句執行結果SQL
- 通過一個簡單的例子,瞭解 Cypress 的執行原理
- SQL_TRACE與tkprof分析SQL
- 通過SQL_ID檢視SQL歷史執行資訊SQL
- MySQL——通過EXPLAIN分析SQL的執行計劃MySqlAI
- SQL語句執行過程詳解SQL
- 透過空間佔用和執行計劃瞭解SQL Server的行儲存索引SQLServer索引
- 通過polyfill瞭解JS(一)JS
- 你瞭解一條sql的執行順序嗎SQL
- 通過shell指令碼監控sql執行頻率指令碼SQL
- 通過pl/sql計算程式的執行時間SQL
- sql 執行過程SQL
- 通過分析SQL語句的執行計劃優化SQL 二SQL優化
- 深入瞭解JavaScript執行過程(JS系列之一)JavaScriptJS
- 一條 sql 的執行過程詳解SQL
- Java多執行緒與併發 - 瞭解“monitor”Java執行緒
- 通過示例瞭解Vue過渡和動畫Vue動畫
- 通過分析LinkedHashMap瞭解LRUHashMap
- Spark SQL 教程: 透過示例瞭解 Spark SQLSparkSQL
- 通過spid,查詢執行慢的sql指令碼SQL指令碼
- 通過分析SQL語句的執行計劃優化SQL(總結)SQL優化
- 通過分析SQL語句的執行計劃優化SQL語句SQL優化
- sql執行過程分析SQL
- [譯] 通過 Lighthouse 瞭解 JavaScript 效能JavaScript
- 通過日誌檢視mysql正在執行的SQL語句MySql
- Jmeter 通過命令列 (CLI) 模式執行測試示例與引數詳解JMeter命令列模式
- 透過簡單示例瞭解執行緒池實現原理執行緒
- Oracle - 執行過的SQL、正在執行的SQL、消耗資源最多的SQLOracleSQL
- 通過 HTTP 頭進行 SQL 注入HTTPSQL
- 通過執行計劃中的CONCATENATION分析sql問題SQL
- 通過等待事件來獲得查詢SQl的執行計劃事件SQL
- SQL 解析與執行流程SQL
- oracle sql trace與10046淺談OracleSQL
- 瞭解可執行的NPM包NPM