ホームページ >データベース >Oracle >Oracle でストアド プロシージャをデバッグするためのヒントと方法

Oracle でストアド プロシージャをデバッグするためのヒントと方法

PHPz
PHPzオリジナル
2023-04-25 16:12:572029ブラウズ

Oracle ストアド プロシージャは、繰り返し実行できるプリコンパイルされたデータベース オブジェクトです。データベースのパフォーマンスを最適化し、時間を節約するために、多くの開発者はストアド プロシージャを使用します。ただし、ストアド プロシージャでエラーが発生すると、デバッグが困難になる可能性があります。この記事では、Oracle でストアド プロシージャをデバッグするためのヒントと方法をいくつか紹介します。

1. ストアド プロシージャのデバッグ フラグを設定する

ストアド プロシージャのデバッグを開始するには、まずコード内でデバッグ フラグを設定する必要があります。 Oracle は、デバッグ フラグが設定された DBMS_DEBUG というパッケージを提供しています。具体的な方法は次のとおりです:

  1. Oracle データベースに接続します:

sqlplus / as sysdba

  1. DBMS_DEBUG パッケージを作成します:

SQL> @%ORACLE_HOME%\RDBMS\admin\dbmsdbg.sql

  1. デバッグが必要なストアド プロシージャの所有者に切り替えます:

SQL> CONNECT myuser ;

  1. デバッグ モードの開始:

SQL> EXECUTE DBMS_DEBUG_JDWP.CONNECT_TCP('localhost', '4000');

where localhost はホスト名、4000 は Java デバッグ ポートです。

  1. デバッグ フラグを設定してデバッグを開始します:

SQL> EXECUTE DBMS_DEBUG_JDWP.SET_BREAKPOINT('schema.package.procedure', 'procedure',1);

ここで、schema はストアド プロシージャが配置されているスキーマ、package はストアド プロシージャが配置されているパッケージ、procedure はストアド プロシージャの名前、1 はデバッグを設定する必要がある行番号です。

2. ストアド プロシージャのリモート デバッグ

ストアド プロシージャのリモート デバッグの前に、まず Java デバッガ (Eclipse や IntelliJ IDEA など) をローカルでセットアップする必要があります。次に、次の手順に従って Oracle でリモート デバッグ フラグを設定します。

  1. Oracle でストアド プロシージャを開始します
  2. ローカル Java デバッガでデバッグ モードを開始します
  3. Oracle でDBMS_DEBUG パッケージのローカル Java デバッガに接続します:

SQL> EXECUTE DBMS_DEBUG_JDWP.CONNECT_TCP('localhost','4000');

  1. DBMS_DEBUG パッケージ内 Set SET_BREAKPOINT プロセス中のブレークポイント:

SQL> EXECUTE DBMS_DEBUG_JDWP.SET_BREAKPOINT('schema.package.procedure', 'procedure',1);

  1. ローカル Java の場合デバッガでデバッグ モードを開始します。
  2. Oracle:

SQL> EXECUTE DBMS_DEBUG_JDWP.DISCONNECT;

3 を通知する DBMS_DEBUG パッケージでリモート デバッグ モードを終了します。デバッグ デバッガの使用

デバッグ フラグを手動で設定することに加えて、Oracle のデバッガを使用することもできます。デバッガーを使用すると、デバッグ プロセスが簡素化され、より直観的になります。

  1. PL/SQL Developerを開く
  2. デバッグが必要なストアド プロシージャのソース コードを開きます
  3. デバッグが必要な行を右クリックします「Toggle Breakpoint」を選択してブレークポイントを設定します。
  4. 「Tools」→「Debug」→「Compile as Debug」をクリックします。
  5. 「Debug」→「Start Debugging」をクリックします。
  6. ストアド プロシージャが呼び出される前にデバッグが必要な操作を実行します
  7. ストアド プロシージャがブレークポイントに到達すると、デバッガはストアド プロシージャの実行を自動的に中断します
  8. デバッグを使用できます。ブラウザのコントロールを使用して、デバッグをステップ実行したり、変数を表示したりできます。
  9. デバッグが完了したら、[デバッグ] -> [デバッグの停止] をクリックしてデバッグを終了します

4. 使用状況ログまたはデバッグ オプション

ストアド プロシージャのログ オプションまたはデバッグ オプションを使用すると、ストアド プロシージャの実行フローとデータを簡単に追跡できます。 DBMS_OUTPUT パッケージを使用すると、ストアド プロシージャにメッセージを出力したり、デバッグ オプションを使用したりできます。

DBMS_OUTPUT:

ストアド プロシージャの実行中にメッセージを表示するには、ストアド プロシージャで DBMS_OUTPUT パッケージを使用します。コード例は次のとおりです。

CREATE OR REPLACE PROCEDURE my_procedure IS
BEGIN
DBMS_OUTPUT.PUT_LINE('Hello World!');
END;

デバッグ オプション:

デバッグ オプションは、ストアド プロシージャの PRAGMA ステートメントを使用して設定されます。コード例は次のとおりです。

CREATE OR REPLACE PROCEDURE my_procedure IS
v_debug BOOLEAN := TRUE;
v_message VARCHAR2(100);
BEGIN
IF v_debug THEN

v_message := 'Starting my_procedure';
DBMS_OUTPUT.PUT_LINE(v_message);

END IF;
...
END;

上記は、Oracle のストアド プロシージャをデバッグするためのヒントと方法です。これらの方法を使用すると、ストアド プロシージャをより効率的にデバッグし、実行を高速化できます。 Oracle でストアド プロシージャを長期間処理する必要がある場合は、これらのテクニックを習得することを強くお勧めします。

以上がOracle でストアド プロシージャをデバッグするためのヒントと方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。