デバッグ設定チェックリスト
PL/SQLのデバッグを最初に使用するために構成するには、いくつかのステップが必要です。ステップの1つをスキップすると、いくつかのエラーが発生する可能性があります。
欠落しているステップを回避し、PL/SQLコードのデバッグをより迅速に開始するには、次のステップを実行します:
-
使用するデータベースがバージョン10.2以降であることを確認します。
-
データベースに対して
SYSDBA権限がある場合:サーバー・エクスプローラの
SYSDBA接続で、PL/SQLデバッグを実行するユーザーを表す「User」ノード(オブジェクト・ビュー)または「Schema」ノード(スキーマ・ビュー)のコンテキスト・メニューから、「Grant Debugging Privileges」メニュー項目を選択します。表示される「Grant Debugging Privileges Dialog」ダイアログには、Visual StudioがインストールされているコンピュータのIPアドレスと、Oracle Databaseがそのコンピュータへの接続に使用できるポートの範囲を表す開始ポート番号および終了ポート番号が表示されます。
-
データベースに対して
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; -
次のように、デバッグ情報付きでPL/SQLプログラム・ユニットをコンパイルします:
サーバー・エクスプローラで、デバッグするパッケージ、プロシージャまたはファンクションを表すノードを見つけます。右クリックし、メニューから「Compile Debug」を選択します。PL/SQLプロシージャまたはファンクションの横にあるアイコンは、デバッグ情報付きでコンパイルされたことを示します。
-
Visual Studioの「ツール」メニューから「PL/SQL Debugging Options」を設定するには、オプション・リストで「オプション」、「Oracle Developer Tools」の順に選択し、次を実行します:
-
IPアドレスのリストから、このコンピュータのIPアドレスを選択します。
PL/SQLのデバッグ中に、Oracle Databaseは、このIPアドレスを使用してVisual Studioに接続します。IPv6アドレスは、Oracle Database 11gリリース2 (11.2)以降でのみサポートされています。
ノート: Oracle Database 12.1以降では、前述のステップ2および3で権限を付与されたIPアドレスである必要があります。
-
指定されたポート範囲が、Visual Studioがインストールされているコンピュータ上の開いているポートを表すこと、およびポートがファイアウォールによってブロックされていないことを確認します。
PL/SQLのデバッグ中、Oracle Databaseは、指定した範囲内のランダム・ポートでTCP/IPを介してVisual Studioに接続します。
ノート: Oracle Database 12.1以降では、このポート範囲は、前述のステップ2および3で権限を付与されたポート範囲と同じか、またはポート範囲のサブセットである必要があります。
-
使用可能なデータベース接続リストで、接続の横にあるボックスを選択します。
これは、この接続を使用してPL/SQLコードを検索するようにPL/SQLデバッガに指示します。
-
-
プロシージャまたはファンクションに手動で入力可能な入力パラメータ(スカラー値)が含まれている場合は、サーバー・エクスプローラでプロシージャ名またはファンクション名を右クリックし、「Step into」または「Run Debug」(ブレークポイントが設定されている場合)を選択してデバッグを開始します。これは、ダイレクト・データベース・デバッグ・モードと呼ばれます。
-
Visual Studioの単一インスタンスを使用してWebサイト以外のクライアント・サーバー(コンソール、WinFormなど)アプリケーションをデバッグし、.NETコードからPL/SQLコードにステップ・インして戻る("多層アプリケーション・デバッグ・モード")場合は、このチェックリストでステップ8から13を実行する必要があります。PL/SQLが中間層によってコールされている場合、またはVisual Studioの2つのインスタンス(1つは.NET用、もう1つはPL/SQL用)を使用する場合("外部アプリケーション・デバッグ・モード")、このチェックリストのステップ14に進みます。
-
Visual Studioのメイン・メニューから「プロジェクト」を選択し、「プロパティ」を選択します(.NETアプリケーション・プロジェクトはロードする必要があります)。
「デバッグ」タブをクリックし、「デバッガーの有効化」リストでVisual Studioホスティング・プロセスを可能にするチェック・ボックスの選択を解除します。これを実行しない場合は、デバッガを1回実行してから停止して、正しく動作させる必要があります。
-
Visual Studioメニューから「ツール」、「Oracle Application Debugging」の順に選択してアプリケーション・レベルのデバッガをオンにし、「Oracle Application Debugging」の横にチェックがあることを確認します。
-
アプリケーションのODP.NET構成ファイル(
machine.config、web.configまたはapp.config)にORA_DEBUG_JDWP値が設定されていないことを確認します。設定されている場合は、無効にします。 -
PL/SQLプログラムでブレークポイントを設定します。必要に応じて、PL/SQLプログラムのコール後に、.NETアプリケーション・コードのブレークポイントを設定することもできます。これにより、PL/SQLのデバッグから戻ると実行が停止します。
-
.NETアプリケーションをビルドしてデバッグを開始すると、PL/SQLブレークポイントが起動します。その後、監視ウィンドウを使用して、.NETアプリケーションとPL/SQLプロシージャの間で送受信されるライブ・データを確認できます。問題が発生した場合は、Oracle出力ウィンドウを確認します。
-
デバッグが完了したら、「ツール」を選択し、Visual Studioメニューから「Oracle Application Debugging」の選択を解除します。
-
Webアプリケーションをデバッグする場合、またはPL/SQLデバッグ専用のVisual Studioインスタンス(および.NETデバッグ用の別のVisual Studioインスタンス)のみを使用する場合は、次のステップを実行します:
-
PL/SQLをデバッグするVisual Studioインスタンスのメニューで、「ツール」を選択し、「External Application Debugging」を選択します。
-
IPアドレスとポート番号を指定します。
ノート: Oracle Database 12.1以降では、前述のステップ2および3でIPアドレスおよびポート番号に権限が付与されている必要があります。
-
PL/SQLストアド・プロシージャまたはファンクションをコールするWebアプリケーションまたはその他のアプリケーションの場合、
ORA_DEBUG_JDWPが環境変数として設定されているか、アプリケーションのODP.NET構成ファイル(machine.config、web.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
-
PL/SQLプログラムでブレークポイントを設定します。
-
Webアプリケーションまたは外部アプリケーションを実行し、Oracleに接続します。問題が発生した場合は、Oracle出力ウィンドウを確認します。
-
ブレークポイントが起動し、デバッグが完了したら、Visual Studioメニューからデバッグを停止します。
-