PL/SQLプログラムのリモート・デバッグ

PL/SQLプログラムのリモート・デバッグとローカル・デバッグの主な違いは、デバッグ・セッションの開始方法です。リモート・デバッグの場合は、SQL*PlusなどのOracleクライアント、OCIプログラムであるDbms_Jobまたはトリガー起動を使用して、デバッグ対象のプログラムを手動で起動する必要があります。その後、デバッグ対象のデータベース・プログラムからJDeveloperデバッガへの接続を確立します。デバッグ対象を起動してJDeveloperデバッガをアタッチした後のリモート・デバッグは、ローカル・デバッグとほとんど同じです。

Oracleデータベース内のPL/SQLプログラムとJavaストアド・プロシージャにデバッガを使用する方法は、「PL/SQLプログラムおよびJavaストアド・プロシージャのデバッグについて」を参照してください。また、前提条件を完了していることを確認してください。

JDeveloperを使用してPL/SQLプログラムをリモートでデバッグするには、次のようにします。

  1. まだ作成していない場合は、「データベース接続の作成」ウィザードを使用してデータベース接続を作成します。
  2. まだ作成していない場合は、ワークスペースとプロジェクトを作成します。
  3. ナビゲータで、プロジェクトをダブルクリックして「プロジェクト・プロパティ」ダイアログを開き、「実行/デバッグ」を選択します。
  4. 既存の実行構成を選択するか、新規の構成を作成して、「編集」をクリックします。
  5. 「実行構成の編集」ダイアログで、「PL/SQL」を選択し、データベース接続を選択します。
  6. 「ツール設定」 - 「デバッガ」 - 「リモート」を選択し、リモート・デバッグ設定を設定します。
  7. ナビゲータで、「データベース」ノードを開いて特定のデータベース・ユーザー名とスキーマ名を表示します。
  8. 「スキーマ」ノードを開きます。
  9. デバッグ対象に応じて、該当するノード(「プロシージャ」「ファンクション」または「パッケージ本体」)を開きます。
  10. デバッグ対象のプロシージャ、ファンクションまたはパッケージを選択し、ダブルクリックしてエディタで開きます。
  11. エディタで、マージンをクリックしてPL/SQLコード内にブレークポイントを設定します。
  12. ナビゲータで該当する プロジェクト「プロジェクト」)を選択し、デバッグ「デバッグ」)をクリックします。
  13. 表示されるダイアログで、適切なリスニング・ポート番号を入力して「OK」をクリックします。他のプロセスで使用されていない任意の有効なポート番号を選択できます。たとえば、使用ポート番号は4000です。

    注意:

  14. SQL*PlusなどのOracleクライアントを使用してデバッガ接続コマンドを発行します。どのクライアントを使用する場合も、デバッガ接続コマンドを発行するセッションが、ブレークポイントを含むPL/SQLプログラムを実行するのと同じセッションであることを確認してください。たとえば、SQL*Plusを使用している場合は、次のコマンドを発行して、JDWPセッション用に指定したマシンおよびポートへのTCP/IP接続をオープンします。

    EXEC DBMS_DEBUG_JDWP.CONNECT_TCP( '123.456.789.012', '4000' )

    123.456.789.012はJDeveloperを実行中のIPアドレスまたはホスト名で、4000はデバッガがリスニング中のポート番号です。

    これ以降は、ブレークポイントを含むPL/SQLコードをコールすると、JDeveloperデバッガがアクティブ化されます。

  1. デバッガがデバッグ接続を受け入れると、「Run Manager」の「プロセス」フォルダに新規のデバッグ・プロセスが反映されます。また、「ログ」ウィンドウに次のようなメッセージが表示されます。

    デバッガはポート4000でリモート・プロセスから接続を受け入れました。

    さらに、JDeveloperのレイアウトが「設計」レイアウトから「デバッグ」レイアウト(ウィンドウの右下)に切り替わったことがわかります。「スタック」、「データ」および「監視式」などのデバッグ・ウィンドウも表示可能になっています。

    「Run Manager」のアイコンは、ポートがリスニングを継続中で、複数のデバッグ接続を受入れ可能であることを示します。

  2. Oracleクライアントに戻り、ブレークポイントを含むPL/SQLプログラム・ユニットを起動するコマンドを発行します。たとえば、SQL*Plusでは次のようなコマンドを発行します。

    EXEC FOO;

    FOOはPL/SQLプロシージャ名です。

  3. JDeveloperは最初のブレークポイントで実行を停止し(「プロジェクト・プロパティ」の「デバッグの開始オプション」で設定している場合)、デバッガ・ウィンドウに状態を表示します。
  4. 問題がなくなるまでPL/SQLプロシージャをステップ実行してデバッグを再開します。「デバッグ中のコード内の移動」を参照してください。
  5. デバッグの終了後に、切断コマンドを使用してデバッグ・プロセスを切断します。たとえば、SQL*Plusから次のように入力します。

    EXEC DBMS_DEBUG_JDWP.DISCONNECT;

    次のメッセージが表示されます。

    デバッガはリモート・プロセスから切断しました。

  6. リスニング・ポートを終了するには、「Run Manager」で 実行 を右クリックして「リスニングの停止」を選択します。

関連項目

PL/SQLプログラムのローカル・デバッグ
PL/SQLプログラムおよびJavaストアド・プロシージャのデバッグ