【Explain Plan】10g中的PLAN_TABLE$臨時表

secooler發表於2010-04-05
在早期的Oracle資料庫中如果需要使用執行計劃的功能,需要提前準備環境,也就是需要先執行下面的的指令碼:
SQL> @?/rdbms/admin/utlxplan.sql

在Oracle 10g版本,這一步驟可以被省略了,取而代之的是系統提供了一個全域性的臨時表PLAN_TABLE$供我們使用。從此,我們不再需要為使用“explain plan for”而單獨去準備環境了。

1.看一下這個全域性臨時表的建立過程
DROP TABLE SYS.PLAN_TABLE$ CASCADE CONSTRAINTS;

CREATE GLOBAL TEMPORARY TABLE SYS.PLAN_TABLE$
(
  STATEMENT_ID       VARCHAR2(30 BYTE),
  PLAN_ID            NUMBER,
  TIMESTAMP          DATE,
  REMARKS            VARCHAR2(4000 BYTE),
  OPERATION          VARCHAR2(30 BYTE),
  OPTIONS            VARCHAR2(255 BYTE),
  OBJECT_NODE        VARCHAR2(128 BYTE),
  OBJECT_OWNER       VARCHAR2(30 BYTE),
  OBJECT_NAME        VARCHAR2(30 BYTE),
  OBJECT_ALIAS       VARCHAR2(65 BYTE),
  OBJECT_INSTANCE    INTEGER,
  OBJECT_TYPE        VARCHAR2(30 BYTE),
  OPTIMIZER          VARCHAR2(255 BYTE),
  SEARCH_COLUMNS     NUMBER,
  ID                 INTEGER,
  PARENT_ID          INTEGER,
  DEPTH              INTEGER,
  POSITION           INTEGER,
  COST               INTEGER,
  CARDINALITY        INTEGER,
  BYTES              INTEGER,
  OTHER_TAG          VARCHAR2(255 BYTE),
  PARTITION_START    VARCHAR2(255 BYTE),
  PARTITION_STOP     VARCHAR2(255 BYTE),
  PARTITION_ID       INTEGER,
  OTHER              LONG,
  OTHER_XML          CLOB,
  DISTRIBUTION       VARCHAR2(30 BYTE),
  CPU_COST           INTEGER,
  IO_COST            INTEGER,
  TEMP_SPACE         INTEGER,
  ACCESS_PREDICATES  VARCHAR2(4000 BYTE),
  FILTER_PREDICATES  VARCHAR2(4000 BYTE),
  PROJECTION         VARCHAR2(4000 BYTE),
  TIME               INTEGER,
  QBLOCK_NAME        VARCHAR2(30 BYTE)
)
ON COMMIT PRESERVE ROWS
NOCACHE;


DROP PUBLIC SYNONYM PLAN_TABLE;

CREATE PUBLIC SYNONYM PLAN_TABLE FOR SYS.PLAN_TABLE$;


GRANT DELETE, INSERT, SELECT, UPDATE ON SYS.PLAN_TABLE$ TO PUBLIC;

2.建立指令碼註釋
1)首先在sys使用者下建立了一個全域性臨時表PLAN_TABLE$
2)一句全域性臨時表PLAN_TABLE$建立了同名PLAN_TABLE
3)將同名PLAN_TABLE的增刪改查許可權授予PUBLIC,保證每個使用者都可以使用。

3.PLAN_TABLE表的詳細詳細描述資訊
關於PLAN_TABLE每個列的說明資訊可以參考Oracle官方文件。

自行參考,不贅述。

4.小結
PLAN_TABLE$的出現,體現了Oracle的人性化和進步。正因為此處提供的是臨時表,因此不同使用者之間所檢視的內容互不影響。

Good luck.

secooler
10.04.05

-- The End --

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-631368/,如需轉載,請註明出處,否則將追究法律責任。

相關文章