正在执行的Oracle SQL为何找不到执行计划
通过gv$session和gv$sql关联得到正在执行的SQL_ID,至始至终这个SQL都在执行(这个很确定,而且这句SQL跑2小时以上都不结束)。
然后用select * from dbms_xplan.display_cursor('6xr0whwktqqs6')查执行计划,报下面错误:
NOTE: cannot fetch plan for SQL_ID: 6xr0whwktqqs6, CHILD_NUMBER: 0
Please verify value of SQL_ID and CHILD_NUMBER;
It could also be that the plan is no longer in cursor cache (check v$sql_p
请教Oracle大侠,6xr0whwktqqs6这句SQL以前执行过,因为cursor sharing原因,Oracle想拿旧的执行计划,但是奇怪的是,
旧的执行计划已经不在了。
问题:
1、既然执行计划不在,为何Oracle还要通过cursor sharing机制拿旧的执行计划,而且拿不到旧的执行计划还不自动生成新的执行计划
2、SQL_ID: 6xr0whwktqqs6的执行计划已经不在,为何还保留在cursor cache中,而且还误导Oracle重用其执行计划
3、怀疑是环境配置问题,试了另外一个环境没这个问题,如果环境配置问题,有人知道哪里配置错了吗