找出導致db file scattered read等待事件發生的SQL及其執行計劃
1、通過查詢v$sql,v$session,v$session_wait找出致等待事件的SQL
select sql_text, sql_fulltext
from v$sql
where address = (SELECT a.SQL_ADDRESS
FROM v$session a, v$session_wait b
WHERE a.SID = b.SID
AND b.event = 'db file scattered read);
2、找到對應SQL的執行計劃
1)、在知道SID的情況下
SELECT hash_value,
child_number,
LPAD(' ', 2 * DEPTH) || operation || ' ' || options ||
DECODE(ID, 0, SUBSTR(optimizer, 1, 6) || ' Cost=' || TO_CHAR(COST)) operation,
object_name OBJECT,
COST,
ROUND(BYTES / 1024) kbytes
FROM v$sql_plan
WHERE hash_value IN
(SELECT a.sql_hash_value FROM v$session a WHERE a.SID = 159)
ORDER BY hash_value, child_number, ID;
2)、不知道SID的情況下
SELECT hash_value,
child_number,
LPAD(' ', 2 * DEPTH) || operation || ' ' || options ||
DECODE(ID, 0, SUBSTR(optimizer, 1, 6) || ' Cost=' || TO_CHAR(COST)) operation,
object_name OBJECT,
COST,
ROUND(BYTES / 1024) kbytes
FROM v$sql_plan
WHERE hash_value IN (SELECT a.sql_hash_value
FROM v$session a, v$session_wait b
WHERE a.SID = b.SID
AND b.event = 'db file scattered read‘)
ORDER BY hash_value, child_number, ID;
附:我們可以通過檢視v$sql_plan檢視得到很多有用的資訊哦,以下就是幾個示例
1、得到全表掃描的物件及其SQL
select distinct object_name, object_owner
from v$sql_plan p
where p.operation = 'TABLE ACCESS'
and p.options = 'FULL'
and object_owner = 'SYS';
SELECT p.object_name, p.hash_value, t.piece, t.sql_text
FROM v$sqltext t, v$sql_plan p
WHERE t.hash_value = p.hash_value
AND p.operation = 'TABLE ACCESS'
and p.options = 'FULL'
AND p.object_owner = 'SYS'
ORDER BY p.hash_value, t.piece;
2、得到全索引掃描物件
select distinct object_name, object_owner
from v$sql_plan p
where p.operation = 'INDEX'
and p.options = 'FULL SCAN'
and p.object_owner = 'SYS';
3、得到索引範圍掃描物件
select distinct object_name, object_owner
from v$sql_plan p
where p.operation = 'INDEX'
and p.options = 'RANGE SCAN'
and p.object_owner = 'SYS';
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25964700/viewspace-705785/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- db file scattered read等待事件事件
- 【等待事件】db file scattered read事件
- 等待事件db file sequential read、db file scattered read和direct read的區別事件
- 【TUNE_ORACLE】等待事件之IO等待“db file scattered read”Oracle事件
- db file sequential read等待事件事件
- 【等待事件】db file sequential read事件
- Oracle:db file scattered readOracle
- 0316理解db file parallel read等待事件Parallel事件
- 0322理解db file parallel read等待事件2Parallel事件
- 【TUNE_ORACLE】等待事件之IO等待“db file sequential read”Oracle事件
- [20210315]理解db file parallel read等待事件3.txtParallel事件
- [20210315]理解db file parallel read等待事件4.txtParallel事件
- I/O上的等待事件 —— control file sequential read/control file parallel write事件Parallel
- 【TUNE_ORACLE】等待事件之IO等待“db file parallel write”Oracle事件Parallel
- direct path read/read temp等待事件事件
- read by other session等待事件Session事件
- DB2執行計劃分析DB2
- Oracle DB 相關常用sql彙總7【手工繫結sql執行計劃】OracleSQL
- read by other session 等待事件分析Session事件
- log file sync等待事件事件
- 【等待事件】log file sync事件
- Oracle sql執行計劃OracleSQL
- cell single block physical read等待事件BloC事件
- 【ASK_ORACLE】Linux從6升級到7導致Oracle產生大量Log file sync等待事件處理辦法OracleLinux事件
- 【TUNE_ORACLE】等待事件之IO等待“read by other session”Oracle事件Session
- 【TUNE_ORACLE】等待事件之IO等待“direct path read”Oracle事件
- 如何檢視SQL的執行計劃SQL
- ORACLE analyse table方式收集表統計資訊導致SQL執行計劃不準確而效能下降OracleSQL
- Oracle SQL Profile固定執行計劃的方法OracleSQL
- 【TUNE_ORACLE】等待事件之日誌等待“log file sync”Oracle事件
- 執行SQL查詢導致磁碟耗盡故障演示SQL
- 【WAIT】 log file sync等待事件說明AI事件
- log file sync等待事件處理思路事件
- MySQL——通過EXPLAIN分析SQL的執行計劃MySqlAI
- 【TUNE_ORACLE】等待事件之日誌等待“log file parallel write”Oracle事件Parallel
- MySQL 因資料型別轉換導致執行計劃使用低效索引MySql資料型別索引
- 【YashanDB知識庫】收集分割槽表統計資訊取樣率小於1導致SQL執行計劃走偏SQL
- Oracle當number型別超過一定長度直方圖限制導致SQL執行計劃錯誤Oracle型別直方圖SQL
- SQL執行計劃異常引起的效能問題SQL