Oracle9i Release 2用のその他のPL/SQLデバッグ機能

JDeveloper内のPL/SQLデバッグは、明確に異なる2つの方法で実装されています。Oracle9i Release 2(9.2)より前のデータベース・バージョンをデバッグする場合、JDeveloperは、サーバー提供の DBMS_DEBUG APIを使用します。Oracle9i Release 2からは、サーバー提供の新しいJDWP(Java Debugging Wire Protocol)実装をJDeveloperが使用します。JDeveloperは、ユーザーがデバッグに使用しているデータベース・バージョンを自動的に検出し、そのバージョンに適切な方法を適用します。

これらの2つのデバッグ実装には差異があるため、通常、それぞれのデータベース・バージョンに応じて適切にデバッグを行う必要があります。JDeveloperでは、Oracle9i Release 2内のJDWP実装にのみ提供されるいくつかの機能の利点が活用されます。

  • Javaストアド・プロシージャのデバッグ:
    JDeveloperとOracle9i Release 2を使用して、Javaストアド・プロシージャとPL/SQLプログラムをシームレスかつスムーズにデバッグできます。 たとえば、Javaストアド・プロシージャをコールするPL/SQLプロシージャがある場合、PL/SQLプロシージャからJavaストアド・プロシージャ・コールにトレース実行することができます。また、Javaストアド・プロシージャ内にブレークポイントを設定してからPL/SQLプロシージャをデバッグできます。Javaストアド・プロシージャ内のブレークポイントに到達すると、デバッガは停止します。 Oracle9i Release 2より前のデータベース・バージョン内のJavaストアド・プロシージャをデバッグすることは、JDeveloperではできません。
  • PL/SQLコレクション:
    これまでのDBMS_DEBUG APIでは、PL/SQL表、レコードおよびカーソルなど、PL/SQLコレクションに対していくつかの制限があります。JDeveloperを使ってOracle9i Release 2データベース内のPL/SQLをデバッグする場合、 複合PL/SQL構造体に完全にアクセスできます。たとえば、PL/SQLプログラムがPL/SQLレコード・テーブルを使用する場合、データ・ウィンドウ内のPL/SQL表を拡張してレコードを表示し、さらにレコードを拡張して項目を表示してから、その場で項目を選んでその値を変更できます。Oracle9i Release 2より前のデータベース・バージョンに対しても複合PL/SQL構造体にアクセスすることは可能ですが、監視式ウィンドウでは要素の完全修飾名を手作業で入力する必要があります。たとえば、「field」という名前のフィールドを持つレコードが入った 「tab」という名前のPL/SQL表の場合は、tab(4).fieldのように入力します。
  • リモートからのデバッグ:
    JDWPが実装されている場合、JDeveloperは、サーバーサイド・コードに対してリモート・デバッグ機能を活用できます。PL/SQLをリモートからデバッグするには、まずJDeveloperデバッガ・リスナーを起動してから、デバッグしたいデータベース・セッション経由でそのリスナーをアタッチします。 Oracle9i Release 2より前のデータベース・バージョン内のPL/SQLをリモートからデバッグすることは、JDeveloperではできません。