解决 执行计划看不到过滤条件 出现'PLAN_TABLE' is old version的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决 执行计划看不到过滤条件 出现'PLAN_TABLE' is old version的问题相关的知识,希望对你有一定的参考价值。

解决 ‘PLAN_TABLE‘ is old version

分析sql执行计划时,遇到
‘PLAN_TABLE‘ is old version
细想起来,数据库是从低版本升级的,估计是这个原因

解决方法: 删除plan_table重建

SQL>explain plan for select * from users;

Explained.

SQL>select * from table(dbms_xplan.display);

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------

-----------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost |
-----------------------------------------------------------
| 0 | SELECT STATEMENT | | 455 | 19565 | 4 |
| 1 | TABLE ACCESS FULL| USERS | 455 | 19565 | 4 |
-----------------------------------------------------------

Note
-----
- ‘PLAN_TABLE‘ is old version

11 rows selected.

SQL> drop table plan_table purge;

Table dropped.

SQL> @/home/ora10g/product/10.2.0/rdbms/admin/utlxplan.sql

Table created.
SQL>explain plan for select * from users;

Explained.

SQL>select * from table(dbms_xplan.display);

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 3461732445

---------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 2406 | 86616 | 4 (0)| 00:00:01 |
| 1 | TABLE ACCESS FULL| USERS | 2406 | 86616 | 4 (0)| 00:00:01 |
---------------------------------------------------------------------------

8 rows selected.

对比一下,显示的内容也不一样了

[@[email protected]]

以上是关于解决 执行计划看不到过滤条件 出现'PLAN_TABLE' is old version的问题的主要内容,如果未能解决你的问题,请参考以下文章

一次sparksql问题排查记录

Oracle执行计划里的 access和filter有什么区别

执行计划的重用

出现make: *** No rule to make target `all'. Stop.解决办法

mysql的关键词执行顺序

Postgresql 查询的过滤条件中的列上的字符串操作如何影响它选择的计划