共有プール上の実行計画を出力する。(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