■SI Object Browser 掲示板


ユーザの皆様、開発者、サポート担当者の交流のための掲示板です!

ユーザーの皆様同士で教え合ったりもできる交流の場にしたいと思っていますので、相互協力をよろしくお願いします。
なお、過去に同じようなQ&Aがあるケースも多いので、投稿前にキーワード検索してみてください。

discussion
※各投稿のカラーは対象となる製品に対応しています。【■…OB ■…OBER ■…全般 ■…その他】
※ライセンスに関するお問合せにつきましては、お問い合わせページよりご連絡いただきますようお願いいたします。
※誹謗中傷や公序良俗に反する書き込みはご遠慮ください。運営側の判断によりメッセージを削除する場合があります。
※環境依存や技術的調査が必要な問題については掲示板上ではお答えしかねます。ご了承ください。
プロシジャーのデバッグについて 2007/02/09 17:10 OB 4
プロシジャーのデバッグを行っておりますが、
データベースのバージョンによって異なる動きとなります。
■ORACLE9iの場合
プロシジャーから別プロシジャーをCALLした際、
トレースでその入れ子となったプロシジャー内をデバッグ可能

■ORACLE10g R2の場合
上記と同じプロシジャーだが、
入れ子になっているプロシジャー内に入らない

デバッグ環境として、クライアントは同一で、
デバッグしているプロシジャーも同一。
異なるのはサーバのDBバージョンのみです。

使用しているのはver.9.0.1.4です。
ORACLE10g R2はサポート外なのでしょうか?
こんにちは
後迫@SIです。

お問い合わせいただきました件ですが、
以下のSQLにて、
Oracle10g側の入れ子となっているプロシージャに対して、
再コンパイルを行っていただいき、
再度デバッグを試していただけますでしょうか。
 
ALTER PROCEDURE サブプロシージャ名 COMPILE DEBUG

お手数をおかけいたしますが、
何卒よろしくお願いいたします。
お世話になっております。
ALTER PROCEDURE サブプロシージャ名 COMPILE DEBUG
を実行したところ、デバッグ可能となりました。
ありがとうございました。

ちなみに下記の点を確認させてください。
・どうしてORACLE9iは上記SQL実行せずにデバッグ可能となり、ORACLE10gでは上記SQL実行が必要なのでしょうか?
・オブジェクトブラウザでのコンパイルは、DEBUGオプション付でコンパイルすることが可能なのでしょうか?

御手数ですが、ご回答いただければ幸いです。

[後迫@SI]
>こんにちは
>後迫@SIです。
>
>お問い合わせいただきました件ですが、
>以下のSQLにて、
>Oracle10g側の入れ子となっているプロシージャに対して、
>再コンパイルを行っていただいき、
>再度デバッグを試していただけますでしょうか。
> 
>ALTER PROCEDURE サブプロシージャ名 COMPILE DEBUG
>
>お手数をおかけいたしますが、
>何卒よろしくお願いいたします。
>
こんにちは
後迫@SIです。

説明不足で申し訳ありません。

ストアドプログラム実行画面にて
「DEBUG」ボタン押下時に表示される確認ダイアログにて、
「再コンパイルを行いデバッグ情報を生成する」のチェックをONにすることに
より、DEBUGオプションつきでコンパイルを行い、デバッグ情報を生成いたしますが、

このとき、プロシージャが呼び出すサブプロシージャに対してまでは
デバッグ情報を生成しません。

そのため、あらかじめサブプロシージャを開き、
「デバッグ情報を生成する」チェックつきでコンパイルするか
前回申し上げたSQLにてデバッグ情報を生成する必要があります。
(デバッグ情報を生成していない場合、トレースすることはできません。)

なお、上記の動作はOracleのバージョンに関わらず同じとなります。
(9iの場合はサブプロシージャにトレースできたとのことですが、
これは、なんらかの操作によりサブプロシージャ側に
すでにデバッグ情報が生成されていたため、トレースできたと思われます。)

何卒よろしくお願いいたします。
回答ありがとうございました。
先日の回答の通り、ALTER文にてプロシジャーを再コンパイルいたしました。
9iと10gの件も了解いたしました。
ありがとうございました。

[後迫@SI]
>こんにちは
>後迫@SIです。
>
>説明不足で申し訳ありません。
>
>ストアドプログラム実行画面にて
>「DEBUG」ボタン押下時に表示される確認ダイアログにて、
>「再コンパイルを行いデバッグ情報を生成する」のチェックをONにすることに
>より、DEBUGオプションつきでコンパイルを行い、デバッグ情報を生成いたしますが、
>
>このとき、プロシージャが呼び出すサブプロシージャに対してまでは
>デバッグ情報を生成しません。
>
>そのため、あらかじめサブプロシージャを開き、
>「デバッグ情報を生成する」チェックつきでコンパイルするか
>前回申し上げたSQLにてデバッグ情報を生成する必要があります。
>(デバッグ情報を生成していない場合、トレースすることはできません。)
>
>なお、上記の動作はOracleのバージョンに関わらず同じとなります。
>(9iの場合はサブプロシージャにトレースできたとのことですが、
>これは、なんらかの操作によりサブプロシージャ側に
>すでにデバッグ情報が生成されていたため、トレースできたと思われます。)
>
>何卒よろしくお願いいたします。