Skip to content
Home » Oracle Database » Performance » SQL Tuning » PLAN_TABLE, How and Why

PLAN_TABLE, How and Why

What is PLAN_TABLE ?

PLAN_TABLE is place to hold some statistics data of explain plans of user's. In the old days, you need to create it for your own schema to store explain plans.

From 11g onward, PLAN_TABLE has become a PUBLIC synonym which points to a global temporary table SYS.PLAN_TABLE$ to hold explain plans for all users in their sessions. Therefore, you don't have to create it.

Next, let's see how to create it if you're required to do so.

How to Create PLAN_TABLE for yourself ?

Nevertheless, you can also create the table for your own schema. To create PLAN_TABLE table, just execute $ORACLE_HOME/rdbms/admin/utlxplan.sql by user, not SYS.

SQL> show user
USER is "HR"
SQL> @$ORACLE_HOME/rdbms/admin/utlxplan.sql

Table created.

Then we check the table definition.

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(128)
 OBJECT_NAME                                        VARCHAR2(128)
 OBJECT_ALIAS                                       VARCHAR2(261)
 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
 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(128)
 OTHER_XML                                          CLOB

PLAN_TABLE table has been created.

Leave a Reply

Your email address will not be published. Required fields are marked *