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.