小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


OracleのDBMS_XPLAN.DISPLAY_CURSOR()で実行計画を取得する

はじめに

OracleのDBMS_XPLAN.DISPLAY_CURSOR()を使って、SQLの実行計画を取得してみました。

新・門外不出のOracle現場ワザ エキスパートが明かす運用・管理の極意 (DB Selection)
小田 圭二 大塚 信男 五十嵐 建平 谷 敦雄 宮崎 博之 神田 達成 村方 仁
翔泳社
売り上げランキング: 137,627

DBMS_XPLAN.DISPLAY_CURSOR()で実行計画を取得する

1.管理者で接続します。

conn sys/oracle as sysdba;

2.serveroutputをoffにします。

set serveroutput off

3.実行計画を取得したいクエリを発行します。

select * from dual;

4.DBMS_XPLAN.DISPLAY_CURSORを参照し、実行計画を取得します。

SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR());


注意点

上記のsql_idの指定を省略してDBMS_XPLAN.DISPLAY_CURSORで直前のSQLの実行計画を確認する場合、 調査対象ののSQLを実行する前に、set serveroutput offを実行しておく必要が あることに注意してください。 set serveroutput on となっていると、内部的に実行されているDBMS_OUTPUTパッケージ のプロシージャの実行計画を取得しようとしてしまい、意図したSQLの実行計画が得られません。 この動作は若干不親切な気がしますが・・・、ま、しょうがないので、 set serveroutput offを実行するのを忘れないようにしましょう。
WR blog » DBMS_XPLAN.DISPLAY_CURSORの使い方とちょっとした落とし穴 はてなブックマーク - WR blog » DBMS_XPLAN.DISPLAY_CURSORの使い方とちょっとした落とし穴