PL/SQLデバッグの設定

Oracle DatabaseでPL/SQLプログラムをデバッグするには、次を実行する必要があります:

  • プログラムをデバッグできるようにデータベースの権限を付与します。

  • デバッグ情報付きでプログラムをコンパイルします。Oracle Developer Toolsの「Compile Debug」コマンドを使用すると、デバッグ情報付きでプログラムをコンパイルできます。

  • PL/SQLデバッグ・オプション・ページで、有効なIPアドレスとポート範囲を設定し、デバッグするPL/SQLコードを含むサーバー・エクスプローラ接続を指定します。

この項の内容は次のとおりです。

デバッグ用のデータベース権限の付与

PL/SQLのデバッグを実行するには、特定のデータベース権限が必要です。これらは、「Grant Debugging Privileges」ダイアログで簡単に付与できます。特定の権限は次のとおりです:

  • DEBUG CONNECT SESSION権限が必要です。これは、GRANT DEBUG CONNECT SESSION TO usernameで付与できます。

  • デバッグ対象のPL/SQLプログラムに対してDEBUG ANY PROCEDURE権限、またはDEBUG権限とEXECUTE権限の両方が必要です。これらは、GRANT DEBUG ANY PROCEDURE TO usernameで付与できます。

  • Oracle Database 12.1以降では、Visual Studioがインストールされているコンピュータ上のIPアドレスおよびポート範囲への明示的なアクセス権をデータベースに付与する追加の権限が必要です。これらの権限は、「Grant Debugging Privileges」ダイアログまたはDBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACEパッケージ・プロシージャをSYSDBAとして手動で実行することで付与できます。

    たとえば、SYSDBAとして次のコマンドを実行し、ホスト、下位ポート、上位ポートおよびプリンシパル名を置き換えます:

    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;
    

    この権限を取り消すには、次を実行します:

    BEGIN
       DBMS_NETWORK_ACL_ADMIN.REMOVE_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; 
    

    DBMS_NETWORK_ACL_ADMINパッケージの詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。

PL/SQLデバッグ・オプションの設定

データベースからのデバッグ・セッション接続のために、Visual Studioでリスナーが起動されます。データベースがこのリスナーに接続できるようにするには、有効なIPアドレスとポート番号を指定する必要があります。また、Oracle Developer Toolsでは、デバッグ対象のPL/SQLコードを含むサーバー・エクスプローラ接続を認識する必要があります。これらの値はすべて、PL/SQLコンパイラ設定の「Options」ページで設定する必要があります。