DBMS_XPLAN是Oracle提供的一個用于查看SQL計劃,包括執行計劃和解釋計劃的包;在以前查看SQL執行計劃的時候,我都是使用set autotrace命令,不過現在看來,DBMS_XPLAN包給出了更加簡化的獲取和顯示計劃的方式。
這5個函數分別對應不同的顯示計劃的方式,DBMS_XPLAN包不僅可以獲取解釋計劃,它還可以用來輸出存儲在AWR,SQL調試集,緩存的SQL游標,以及SQL基線中的語句計劃,實現如上的功能,通常會用到一下5個方法:
1.DISPLAY
2.DISPLAY_AWR
3.DISPLAY_CURSOR
4.DISPLAY_PLAN
5.DISPLAY_SQL_PLAN_BASELINE
6.DISPLAY_SQLSET
下面將重點討論關于DBMS_XPLAN包在解釋計劃和執行計劃上的應用。
來看一個經常使用的查看某條語句的解釋計劃示例:
Explained.
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 3956160932
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 14 | 532 | 3 (0)| 00:00:01 |
| 1 | TABLE ACCESS FULL| EMP | 14 | 532 | 3 (0)| 00:00:01 |
--------------------------------------------------------------------------
8 rows selected.
-- 對應autotrace實現
SQL> set autotrace traceonly explain
上例中使用了dbms_xplan.display方法來顯示PLAN_TABLE中保存的解釋計劃,如果想要顯示執行計劃,就需要使用到DMBS_XPLAN.DISPLAY_CURSOR方法了,DMBS_XPLAN.DISPLAY_CURSOR調用簽名:
sql_id表示存儲在cursor cache中的SQL語句的id,child_number用于指示緩存sql語句計劃的子id,format參數用于控制包含在輸出中的信息類型,官檔的參數如下:
1.BASIC: 顯示最少的信息,只包括操作類型,ID名稱和選項。
2.TYPICAL: 默認值,顯示相關信息以及某些附加的顯示選項,如分區和并發使用等。
3.SERIAL: 與TYPICAL類型相似,區別是它不包括并發的信息,即使是并行執行的計劃。
4.ALL: 顯示最多的信息,包含了TYPICAL的全部以及更多的附加信息,如別名和遠程調用等。
除了以上的基本的四種輸出格式外,format還有一些附加的選項可用于定制化輸出行為,使用中可以通過逗號和空格分隔來聲明多個關鍵字,同時可以使用”+”和”-”符號來包含或排除相應的顯示元素,這些附加的選項在官檔中也有記載:
1.ROWS 主站蜘蛛池模板: 客服| 新兴县| 石楼县| 盐津县| 达拉特旗| 山西省| 阿图什市| 潮州市| 申扎县| 河南省| 始兴县| 贵港市| 武鸣县| 芒康县| 虹口区| 翁源县| 兴安县| 阿鲁科尔沁旗| 安义县| 盐边县| 门头沟区| 镇康县| 南安市| 武邑县| 长兴县| 贡嘎县| 石棉县| 夏邑县| 天台县| 肥东县| 万源市| 白银市| 石门县| 合水县| 手游| 日照市| 攀枝花市| 开平市| 潼关县| 光泽县| 临海市|