ねら~ITエンジニア雑記

やきうのお兄ちゃんが綴るOracle Databaseメインのブログ

共有プール上の実行計画を出力する。(DBMS_XPLAN.DISPLAY_CURSOR)

久々の更新じゃーい!

共有プール上に格納された SQL の実行計画を出力するには、
DBMS_STATSパッケージの DISPLAY_CURSORファンクションを使用する。

SQL> SET LINESIZE 170;
SQL> SET PAGESIZE 1000;
SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('872j498uhkxf4', NULL, 'ALL'));

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------
SQL_ID  872j498uhkxf4, child number 0
-------------------------------------
SELECT /*+ OPT_PARAM('_optim_peek_user_binds', 'true') */ * FROM TEST_01 WHERE C1 <= :B1

Plan hash value: 2963094440

------------------------------------------------------------------------------------------
| Id  | Operation                   | Name       | Rows  | Bytes | Cost (%CPU)| Time     |
------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT            |            |       |       |     3 (100)|          |
|   1 |  TABLE ACCESS BY INDEX ROWID| TEST_01    |   100 |  1100 |     3   (0)| 00:00:01 |
|*  2 |   INDEX RANGE SCAN          | TEST_01_PK |   100 |       |     2   (0)| 00:00:01 |
------------------------------------------------------------------------------------------
:


SQL_ID  872j498uhkxf4, child number 1
-------------------------------------
SELECT /*+ OPT_PARAM('_optim_peek_user_binds', 'true') */ * FROM TEST_01 WHERE C1 <= :B1

Plan hash value: 1248808051

-----------------------------------------------------------------------------
| Id  | Operation         | Name    | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |         |       |       |    71 (100)|          |
|*  1 |  TABLE ACCESS FULL| TEST_01 |   100K|  1074K|    71   (5)| 00:00:01 |
-----------------------------------------------------------------------------
:


SQL>

一つの sql_id に複数の実行計画が存在する場合は、第2引数(CURSOR_CHILD_NO)に
NULL を明示的に指定することで、全ての実行計画を出力することができる。(上記例参照)

Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス
11g リリース2(11.2)

B56262-03
DISPLAY_CURSORファンクション
http://docs.oracle.com/cd/E16338_01/appdev.112/b56262/d_xplan.htm#i998364