2017-12-28 69 views
1

データベース内でPL/SQLパッケージを呼び出しているJDBCを使用して、一部のデータを保存しようとしている実行中のJava Webアプリケーションがあるとします。リモートデバッグPL/SQLパッケージ

javaコードでは、execute()関数がコールされました。保存するデータはデータベースのPL/SQLパッケージに送信され、データが処理されて最終的に保存されます。

Oracle SQL DeveloperまたはPL/SQL Developerを使用して、コールされたPL/SQLパッケージをデバッグする方法はありますか?これらのIDEは、このようなリモート・デバッグ機能をサポートしていますか?

+0

「**データベース**のデバッグ」とはどういう意味ですか?私はこの概念に精通していません。 – mathguy

+2

PL/SQLのインタラクティブなデバッグは可能ですが、事前に準備しておいた場合にのみ可能です。特定の権限を付与する必要があるためです。 [このブログは@thatjeffsmithに掲載されており、関連する手順の一番上の概要です](https://www.thatjeffsmith.com/archive/2014/02/how-to-start-the-plsql-debugger/) – APC

+0

@mathguy thx、ラッシュで書いた、今修正しました – Z3d4s

答えて

4

お探しの製品は、リモートデバッグの機能がOracle SQL Developerに用意されています。 満たすべきいくつかの前提条件があります。

  1. デバッグしたいすべてのパッケージはをデバッグ用にコンパイルする必要があります。
    alter package SCHEMA.PACKAGE_NAME compile debug;
  2. リモートデバッグを実行したいスキーマからユーザーがで付与する必要があります適切な権限:
    • grant debug connect session to USER_NAME;は、リモートユーザーのセッションに接続するために利用できるためである
    • grant debug any procedure to USER_NAME;は、Oracle 12cとを使用している場合、あなたはdba_network_acl_privilegesのようないくつかの有用なOracleのビューがあることをherehereが、また注意を見て、アカウントの追加ACLの制限を考慮する必要があります
    • (パッケージにバンドルされたものを含む)のデバッグ手順に利用可能です既存のACL権限
  3. をチェックするために、リモートユーザーはそのCONNECT_TCP手順
  4. へのアクセス権を持っているために、デバッガ
    • grant execute on SYS.DBMS_DEBUG_JDWP to REMOTE_USER_NAME;のための「信号を与える」ことができるはずです10

これらの要件が満たされていれば(またはそれらを満たすことができる場合)、次のようにします。 Sue Harperのブログのthis entry(または同著者のOracleブログのthis article、またはthis one)を使用して目標に到達してください。短く:

  1. 特定のポートでデバッグリスナーをローカルに開始し、ブレークポイントを設定する(または適切なデバッガオプションを設定する)必要があります。
  2. リモートユーザーは、目的のコードを実行する前にexec DBMS_DEBUG_JDWP.CONNECT_TCP('ip-address', port)を実行する必要があります。これは、セッションログオントリガーで実装されます。
  3. リモートでコードをデバッグします。

(これは実際のものと比べると多少なりともありますが)これは私が通常どのように処理するかです。

残念ながら、残念ながらdoes not supportリモート・デバッグ(DBMS_DEBUG_JDWPの代わりにDBMS_DEBUGパッケージを使用)、最新バージョンであっても、PL/SQL Developerについて言及したいと思います。 Oracle SQL DeveloperはJava、PL/SQL Developerで書かれていませんが、これは問題の根源だと思います。