在 oracle 中维护计划 table

maintaining a plan table in oracle

如果 PLAN_TABLE 是自动创建的 post Oracle 9i,那为什么我得到

"Table or view does not exists"

同时试图解释计划。我正在使用甲骨文 11.1。我使用架构所有者帐户登录。

why do I get "Table or view does not exists" while trying to explain plan.

有两种可能:

  • 您登录的 USER 没有 PLAN_TABLE 的权限。

  • PLAN_TABLE其实不存在

如果你能解决第 1 点,那就太好了。

如果 plan table doesn't exist,那么您可以通过执行 Oracle 提供的脚本 utlxplan.sql 创建自己的 PLAN_TABLE(前提是用户具有创建 table 的权限):

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning and Automatic Storage Management options

SQL> @?/rdbms/admin/utlxplan.sql

Table created.

SQL> DESC PLAN_TABLE;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------

 STATEMENT_ID                                       VARCHAR2(30)
 PLAN_ID                                            NUMBER
 TIMESTAMP                                          DATE
 REMARKS                                            VARCHAR2(4000)
 OPERATION                                          VARCHAR2(30)
 OPTIONS                                            VARCHAR2(255)
 OBJECT_NODE                                        VARCHAR2(128)
 OBJECT_OWNER                                       VARCHAR2(30)
 OBJECT_NAME                                        VARCHAR2(30)
 OBJECT_ALIAS                                       VARCHAR2(65)
 OBJECT_INSTANCE                                    NUMBER(38)
 OBJECT_TYPE                                        VARCHAR2(30)
 OPTIMIZER                                          VARCHAR2(255)
 SEARCH_COLUMNS                                     NUMBER
 ID                                                 NUMBER(38)
 PARENT_ID                                          NUMBER(38)
 DEPTH                                              NUMBER(38)
 POSITION                                           NUMBER(38)
 COST                                               NUMBER(38)
 CARDINALITY                                        NUMBER(38)
 BYTES                                              NUMBER(38)
 OTHER_TAG                                          VARCHAR2(255)
 PARTITION_START                                    VARCHAR2(255)
 PARTITION_STOP                                     VARCHAR2(255)
 PARTITION_ID                                       NUMBER(38)
 OTHER                                              LONG
 OTHER_XML                                          CLOB
 DISTRIBUTION                                       VARCHAR2(30)
 CPU_COST                                           NUMBER(38)
 IO_COST                                            NUMBER(38)
 TEMP_SPACE                                         NUMBER(38)
 ACCESS_PREDICATES                                  VARCHAR2(4000)
 FILTER_PREDICATES                                  VARCHAR2(4000)
 PROJECTION                                         VARCHAR2(4000)
 TIME                                               NUMBER(38)
 QBLOCK_NAME                                        VARCHAR2(30)

If everything fails, talk to your DBA.