使用 dbms_xplan.display 按照 plan_hash_value 查执行计划的方法

dbms_xplan.display_* 能按照 plan_hash_value 只有 display_awr 方法,如果这个SQL PLAN 刚刚生成,没有写入到AWR怎么办呢? 

可以将 V$SQL_PLAN 的数据 LOAD 进 PLAN_TABLE 后进行展现:

 

DELETE FROM plan_table;

insert into plan_table(
statement_id
,PLAN_ID
,timestamp  
,REMARKS  
,OPERATION  
,OPTIONS  
,OBJECT_NODE  
,OBJECT_OWNER  
,OBJECT_NAME  
,OBJECT_ALIAS  
,OBJECT_INSTANCE 
,OBJECT_TYPE  
,OPTIMIZER  
,SEARCH_COLUMNS  
,ID   
,PARENT_ID  
,DEPTH   
,POSITION  
,COST   
,CARDINALITY  
,BYTES   
,OTHER_TAG  
,PARTITION_START 
,PARTITION_STOP  
,PARTITION_ID  
,OTHER   
,OTHER_XML  
,DISTRIBUTION  
,CPU_COST  
,IO_COST  
,TEMP_SPACE  
,ACCESS_PREDICATES 
,FILTER_PREDICATES 
,PROJECTION  
,TIME   
,QBLOCK_NAME  
)
SELECT 
 'PLAN_'||PLAN_HASH_VALUE  AS statement_id
, 0 PLAN_ID
,SYSDATE timestamp  
,REMARKS  
,OPERATION  
,OPTIONS  
,OBJECT_NODE  
,OBJECT_OWNER  
,OBJECT_NAME  
,OBJECT_ALIAS  
,0 OBJECT_INSTANCE 
,OBJECT_TYPE  
,OPTIMIZER  
,SEARCH_COLUMNS  
,ID   
,PARENT_ID  
,DEPTH   
,POSITION  
,COST   
,CARDINALITY  
,BYTES   
,OTHER_TAG  
,PARTITION_START 
,PARTITION_STOP  
,PARTITION_ID  
,OTHER   
,OTHER_XML  
,DISTRIBUTION  
,CPU_COST  
,IO_COST  
,TEMP_SPACE  
,ACCESS_PREDICATES 
,FILTER_PREDICATES 
,PROJECTION  
,TIME   
,QBLOCK_NAME  
 FROM v$sql_plan 
 WHERE PLAN_HASH_VALUE='&plan_hash_value' 
 AND ADDRESS=(SELECT MAX(ADDRESS) FROM V$SQL_PLAN WHERE PLAN_HASH_VALUE='&plan_hash_value');

SELECT * FROM TABLE(dbms_xplan.display('plan_table', 'PLAN_'||'&plan_hash_value'));

  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值