通過等待事件來獲得查詢SQl的執行計劃
網上找了一個SQL挺好用的特此記錄如下:
---------------------------------------------------------
set linesize 132
break on hash_value skip 1 dup
col child_number format 9999 heading 'CHILD'
col operation format a55
col cost format 99999
col kbytes format 999999
col object format a25
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,
cardinality,
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 = '&waitevent')
order by hash_value, child_number, id;
這樣我們可以根據等待事件來獲得具體SQl的執行計劃,在runtime的時候用比較方便。
以下是我生產環境裡的一個輸出計劃:
HASH_VALUE CHILD OPERATION OBJECT COST CARDINALITY KBYTES
---------- ----- ------------------------------------------------------- ------------------------- ------ ----------- -------
3267427106 0 UPDATE STATEMENT ALL_RO Cost=7231 7231
3267427106 0 UPDATE TS_FLPLNCMPNT
3267427106 0 TABLE ACCESS FULL TS_FLPLNCMPNT 7231 1 0
那麼如果我想要查一下當前全表掃描的表都有那些,怎麼查呢?
select distinct object_name,object_owner from v$sql_plan p
where p.operation='TABLE ACCESS' and p.options='FULL'
and object_owner='&schema_owner';
這樣我們可以通過查詢v$sql_plan指定schema_owner來獲得那些進行過full table scan的表
如何獲得全索引掃描的物件呢?
select distinct object_name,object_owner from v$sql_plan p
where p.operation='INDEX' and p.options='FULL SCAN'
and object_owner='&schema_owner';
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12361284/viewspace-150441/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL Server簡潔查詢正在執行SQL(等待事件)SQLServer事件
- 透過查詢檢視sql執行計劃SQL
- 【AWR】通過AWR報告中記錄的 SQL Id獲得SQL語句的執行計劃SQL
- 使用dbms_xplan包來獲得sql語句的執行計劃SQL
- SQL效能的度量 - 透過v$sql_plan查詢執行計劃SQL
- 根據SQL Id獲得SQL語句的執行計劃SQL
- 獲得目標SQL語句執行計劃的方法SQL
- MySQL——通過EXPLAIN分析SQL的執行計劃MySqlAI
- 通過鎖定表的統計資訊來穩定sql的執行計劃SQL
- 通過spid,查詢執行慢的sql指令碼SQL指令碼
- oracl10g以上通過v$sql_plan查詢sql的執行計劃是否發生變化SQL
- 【指令碼】通過hash_value直接獲得sql語句的執行計劃(9i-->10g過度)指令碼SQL
- 獲取SQL執行計劃SQL
- 通過內部的hint來控制執行計劃
- 9i and 10g 通過SQL_ADDRESS 或sql_id查詢執行計劃SQL
- 在MySQL中使用explain查詢SQL的執行計劃MySqlAI
- explain 查詢執行計劃AI
- DB常用指令碼 - 查詢正在執行的active session及對應sql ,等待事件指令碼SessionSQL事件
- 【sql調優之執行計劃】獲取執行計劃SQL
- 通過分析SQL語句的執行計劃優化SQL 二SQL優化
- 獲取SQL執行計劃的方式:SQL
- 通過分析SQL語句的執行計劃優化SQL(總結)SQL優化
- 通過分析SQL語句的執行計劃優化SQL語句SQL優化
- 查詢SQLSERVER執行過的SQL記錄SQLServer
- 透過10053事件分析一個SQL執行計劃事件SQL
- PostgreSQL 查詢當前執行中sql的執行計劃——pg_show_plans模組SQL
- 找出導致db file scattered read等待事件發生的SQL及其執行計劃事件SQL
- Oracle 獲取SQL執行計劃方法OracleSQL
- 執行計劃-6:推入子查詢
- 通過執行計劃中的CONCATENATION分析sql問題SQL
- 查詢Oracle正在執行和執行過的SQL語句OracleSQL
- 透過sql查詢獲得當前session的trace檔名稱SQLSession
- 指令碼:獲得現有語句的執行計劃指令碼
- 通過shell指令碼來得到不穩定的執行計劃指令碼
- 用sql profile來固定執行計劃SQL
- 執行計劃-1:獲取執行計劃
- 獲取oracle正在處於等待狀態的sql語句的執行計劃的語句OracleSQL
- SQL的執行計劃SQL