デバッグ設定チェックリスト

PL/SQLのデバッグを最初に使用するために構成するには、いくつかのステップが必要です。ステップの1つをスキップすると、いくつかのエラーが発生する可能性があります。

欠落しているステップを回避し、PL/SQLコードのデバッグをより迅速に開始するには、次のステップを実行します:

  1. 使用するデータベースがバージョン10.2以降であることを確認します。

  2. データベースに対してSYSDBA権限がある場合:

    サーバー・エクスプローラのSYSDBA接続で、PL/SQLデバッグを実行するユーザーを表す「User」ノード(オブジェクト・ビュー)または「Schema」ノード(スキーマ・ビュー)のコンテキスト・メニューから、「Grant Debugging Privileges」メニュー項目を選択します。

    表示される「Grant Debugging Privileges Dialog」ダイアログには、Visual StudioがインストールされているコンピュータのIPアドレスと、Oracle Databaseがそのコンピュータへの接続に使用できるポートの範囲を表す開始ポート番号および終了ポート番号が表示されます。

  3. データベースに対してSYSDBA権限がない場合は、デバッグを実行するユーザーのSYSDBAとして次のコマンドを実行するようにDBAに依頼します:

    grant debug any procedure to username
    

    および

    grant debug connect session to username
    

    別の方法として、デバッグ対象のPL/SQLプログラムに対して、デバッグ権限と実行権限の両方をユーザーに付与できます。

    さらに、ホスト、下位ポート、上位ポートおよびプリンシパル名を置き換えて、次のコマンドをSYSDBAとして実行するようにDBAに依頼します:

    BEGIN 
      DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE( 
        HOST => '255.255.255.25', 
        LOWER_PORT => 61000, 
        UPPER_PORT => 65000, 
        ACE => XS$ACE_TYPE(PRIVILEGE_LIST => XS$NAME_LIST('jdwp'), 
                           PRINCIPAL_NAME => 'HR', 
                           PRINCIPAL_TYPE => XS_ACL.PTYPE_DB)); 
    END;
    
  4. 次のように、デバッグ情報付きでPL/SQLプログラム・ユニットをコンパイルします:

    サーバー・エクスプローラで、デバッグするパッケージ、プロシージャまたはファンクションを表すノードを見つけます。右クリックし、メニューから「Compile Debug」を選択します。PL/SQLプロシージャまたはファンクションの横にあるアイコンは、デバッグ情報付きでコンパイルされたことを示します。

  5. Visual Studioの「ツール」メニューから「PL/SQL Debugging Options」を設定するには、オプション・リストで「オプション」「Oracle Developer Tools」の順に選択し、次を実行します:

    1. IPアドレスのリストから、このコンピュータのIPアドレスを選択します。

      PL/SQLのデバッグ中に、Oracle Databaseは、このIPアドレスを使用してVisual Studioに接続します。IPv6アドレスは、Oracle Database 11gリリース2 (11.2)以降でのみサポートされています。

      ノート: Oracle Database 12.1以降では、前述のステップ2および3で権限を付与されたIPアドレスである必要があります。

    2. 指定されたポート範囲が、Visual Studioがインストールされているコンピュータ上の開いているポートを表すこと、およびポートがファイアウォールによってブロックされていないことを確認します。

      PL/SQLのデバッグ中、Oracle Databaseは、指定した範囲内のランダム・ポートでTCP/IPを介してVisual Studioに接続します。

      ノート: Oracle Database 12.1以降では、このポート範囲は、前述のステップ2および3で権限を付与されたポート範囲と同じか、またはポート範囲のサブセットである必要があります。

    3. 使用可能なデータベース接続リストで、接続の横にあるボックスを選択します。

      これは、この接続を使用してPL/SQLコードを検索するようにPL/SQLデバッガに指示します。

  6. プロシージャまたはファンクションに手動で入力可能な入力パラメータ(スカラー値)が含まれている場合は、サーバー・エクスプローラでプロシージャ名またはファンクション名を右クリックし、「Step into」または「Run Debug」(ブレークポイントが設定されている場合)を選択してデバッグを開始します。これは、ダイレクト・データベース・デバッグ・モードと呼ばれます。

  7. Visual Studioの単一インスタンスを使用してWebサイト以外のクライアント・サーバー(コンソール、WinFormなど)アプリケーションをデバッグし、.NETコードからPL/SQLコードにステップ・インして戻る("多層アプリケーション・デバッグ・モード")場合は、このチェックリストでステップ8から13を実行する必要があります。PL/SQLが中間層によってコールされている場合、またはVisual Studioの2つのインスタンス(1つは.NET用、もう1つはPL/SQL用)を使用する場合("外部アプリケーション・デバッグ・モード")、このチェックリストのステップ14に進みます。

  8. Visual Studioのメイン・メニューから「プロジェクト」を選択し、「プロパティ」を選択します(.NETアプリケーション・プロジェクトはロードする必要があります)。

    「デバッグ」タブをクリックし、「デバッガーの有効化」リストでVisual Studioホスティング・プロセスを可能にするチェック・ボックスの選択を解除します。これを実行しない場合は、デバッガを1回実行してから停止して、正しく動作させる必要があります。

  9. Visual Studioメニューから「ツール」「Oracle Application Debugging」の順に選択してアプリケーション・レベルのデバッガをオンにし、「Oracle Application Debugging」の横にチェックがあることを確認します。

  10. アプリケーションのODP.NET構成ファイル(machine.configweb.configまたはapp.config)にORA_DEBUG_JDWP値が設定されていないことを確認します。設定されている場合は、無効にします。

  11. PL/SQLプログラムでブレークポイントを設定します。必要に応じて、PL/SQLプログラムのコールに、.NETアプリケーション・コードのブレークポイントを設定することもできます。これにより、PL/SQLのデバッグから戻ると実行が停止します。

  12. .NETアプリケーションをビルドしてデバッグを開始すると、PL/SQLブレークポイントが起動します。その後、監視ウィンドウを使用して、.NETアプリケーションとPL/SQLプロシージャの間で送受信されるライブ・データを確認できます。問題が発生した場合は、Oracle出力ウィンドウを確認します。

  13. デバッグが完了したら、「ツール」を選択し、Visual Studioメニューから「Oracle Application Debugging」の選択を解除します。

  14. Webアプリケーションをデバッグする場合、またはPL/SQLデバッグ専用のVisual Studioインスタンス(および.NETデバッグ用の別のVisual Studioインスタンス)のみを使用する場合は、次のステップを実行します:

    1. PL/SQLをデバッグするVisual Studioインスタンスのメニューで、「ツール」を選択し、「External Application Debugging」を選択します。

    2. IPアドレスとポート番号を指定します。

      ノート: Oracle Database 12.1以降では、前述のステップ2および3でIPアドレスおよびポート番号に権限が付与されている必要があります。

    3. PL/SQLストアド・プロシージャまたはファンクションをコールするWebアプリケーションまたはその他のアプリケーションの場合、ORA_DEBUG_JDWPが環境変数として設定されているか、アプリケーションのODP.NET構成ファイル(machine.configweb.configまたはapp.config)で設定されていることを確認してください。この値は、アプリケーションまたはWebサイトがOracleに接続する前に設定する必要があります。構成ファイルの値は、どの環境変数よりも優先されます。

      ノート: ORA_DEBUG_JDWP構成ファイル・エントリは、ODP.NETバージョン12.1.0.2以降でのみサポートされます。以前のバージョンでは、かわりに環境変数を使用してください。

      構成ファイルの例:

      <oracle.manageddataaccess.client>
        <version number="*">
          <settings>
            <setting name="ORA_DEBUG_JDWP" value="host=127.0.0.1;port=1234"/>
          </settings>
        </version>
      </oracle.manageddataaccess.client> 
      

      環境変数の例:

      set ORA_DEBUG_JDWP=host=127.0.0.1;port=1234 
      
    4. PL/SQLプログラムでブレークポイントを設定します。

    5. Webアプリケーションまたは外部アプリケーションを実行し、Oracleに接続します。問題が発生した場合は、Oracle出力ウィンドウを確認します。

    6. ブレークポイントが起動し、デバッグが完了したら、Visual Studioメニューからデバッグを停止します。