有时候,一些sql语句选择了错误的执行计划,与这个语句硬分析的时候peeking到的绑定变量值相关,这个绑定变量值对于问题的诊断是至关重要的,你当然可以根据一些别的线索来确定次优的执行计划是因为硬分析时peeking到了非典型值,但如果能明确的显示硬分析时peeking到的绑定变量值是最好的,其实确实是记录了的:
数据库版本:10.2.0.4
SQL> select * from table(dbms_xplan.display_awr(sql_id=> '0763n191h71at',plan_hash_value=>1495544113 ,db_id=>2571538002 ,format=> 'advanced'));
select * from table(dbms_xplan.display_awr(sql_id=> '0763n191h71at',plan_hash_value=>1495544113 ,db_id=>2571538002 ,format=> 'advanced'))
ORA-00907: missing right parenthesis
不知道这种调用形式为什么会报错.不过下面的调用形式是没有问题的.
select * from table(dbms_xplan.display_awr('0763n191h71at',1495544113,2571538002,'advanced'));
SELECT COUNT(*) FROM PRODUCT P, CATALOGRELATEPRODUCT CATAP WHERE CATAP.CATALOGID = :B1
AND CATAP.PRODUCTID = P.ID AND P.PUBLISHSTATUS = 3
Peeked Binds (identified by position):
--------------------------------------
1 - :B1 (NUMBER): 122