プロが教えるわが家の防犯対策術!

PL/SQLの実行計画を取得したいのですが、autotraceを指定しても
その結果が表示されません。結果表示のためにはsqlplusと違った
考慮が必要なのでしょうか。oracleに詳しい方、教えてください。
よろしくお願い致します。

A 回答 (3件)

#2 です。



因みに、そのPL/SQLから切り出す(実行計画を取りたい)対象のクエリが沢山あるなら、SQLトレースの方が遥かに楽です。
autotraceと同様に、ただ単に、実行するだけなので。

そして正確です。
PL/SQLからクエリを切り出すと言う事は、バインド変数・置換変数(リテラル)による実行計画の差異を気にかけて実行計画を取る必要があります。
(そこをカバーできるようにSQLを書き換える必要がある)

SQLトレースは、PL/SQL内で実際に実行されたクエリ、そのものの実行計画なので、正確、と言うわけです。

サーバー側での作業が必須であり、そこの工数(ってほどでもないけど)とのトレードオフですね。
一回、定常的なスキームにしてしまえば、それほど手間ではありません。
    • good
    • 0
この回答へのお礼

確かにPL/SQLからSQLを切り出すのは大変ですよね。上記の方法で
やってみます。丁寧なご説明ありがとうございました。

お礼日時:2011/05/27 06:55

#1さんの方法を取るか、もっと正確を期すのであれば、そのセッションでSQLトレースを取って、サーバー側で tkprof コマンドを実行し、出力されたプルーフファイルで実行計画を確認するか、ですね。



アプリケーション・トレース・ツールの使用方法
http://download.oracle.com/docs/cd/E16338_01/ser …
    • good
    • 0
この回答へのお礼

早速のご回答助かります。
こんな技もあるのですね。大変勉強になります。

お礼日時:2011/05/25 22:48

実行計画はSQLの実行に対して取得するものでPL/SQLには対応してません。


PL/SQL内のSQLを取りたければ、切り出してそのSQLだけ実行して取得してください。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
PL/SQLには対応していないのですね。
カーソルで検索した後、そのキーを使用してループ内でアップデートを
かけているため、その部分のSQLだけを切り出して性能評価することに
意味があるかを再考してみます。

お礼日時:2011/05/25 22:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!