はじめに
OracleのDBMS_XPLAN.DISPLAY_CURSOR()を使って、SQLの実行計画を取得してみました。
新・門外不出のOracle現場ワザ エキスパートが明かす運用・管理の極意 (DB Selection)
posted with amazlet at 13.08.29
小田 圭二 大塚 信男 五十嵐 建平 谷 敦雄 宮崎 博之 神田 達成 村方 仁
翔泳社
売り上げランキング: 137,627
翔泳社
売り上げランキング: 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の使い方とちょっとした落とし穴