oracle

SQL Developerからのデバッグ

デフォルトでは繋がりません

デフォルトの状態(当環境はOracle12c)では利用できません。利用を試みた場合以下のようなエラーになります。

データベースvm013に接続中です。
PL/SQLの実行中: CALL DBMS_DEBUG_JDWP.CONNECT_TCP( ‘192.168.3.8’, ‘52172’ )
ORA-01031: 権限が不足しています。
ORA-06512: “SYS.DBMS_DEBUG_JDWP”, 行68
ORA-06512: 行1
このセッションでは、DEBUG CONNECT SESSIONおよびDEBUG ANY PROCEDUREユーザー権限が必要です。
プロセスが終了しました。
データベースvm013から切断中です。

権限を付与します

デバッグ実施ユーザに以下2つのシステム権限を付与します。

GRANT DEBUG CONNECT SESSION to SCOTT;
GRANT DEBUG ANY PROCEDURE to SCOTT;
-- 接続確認
SQL> select * from DBA_SYS_PRIVS p where p.GRANTEE = 'SCOTT' and p.PRIVILEGE like 'DEBUG%';

    GRANTEE                PRIVILEGE    ADMIN_OPTION    COMMON
___________ ________________________ _______________ _________
SCOTT    DEBUG ANY PROCEDURE      NO              NO
DCOTT    DEBUG CONNECT SESSION    NO              NO
SQL>

再度試みます

データベースvm013に接続中です。
PL/SQLの実行中: CALL DBMS_DEBUG_JDWP.CONNECT_TCP( ‘192.168.3.8’, ‘52205’ )
ORA-24247: アクセス制御リスト(ACL)によりネットワーク・アクセスが拒否されました
ORA-06512: “SYS.DBMS_DEBUG_JDWP”, 行68
ORA-06512: 行1
プロセスが終了しました。
データベースvm013から切断中です。

クライアントアドレスを追加します

DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACEを使い、デバッグ用接続を許可するクライアントのIPを登録します。

BEGIN
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE
(
    host => '192.168.3.*', --接続を許可するのIPやホスト
    lower_port => null,
    upper_port => null,
    ace => xs$ace_type(privilege_list => xs$name_list('jdwp'),
    principal_name => 'SCOTT', 
    principal_type => xs_acl.ptype_db)
);
END;
/

追加した内容を確認する

ホストアドレス確認

SELECT * FROM DBA_HOST_ACES t order by t.HOST 
;

不要になった場合の削除(取り消し)の仕方

BEGIN
DBMS_NETWORK_ACL_ADMIN.REMOVE_HOST_ACE(
    host => '192.168.3.*',
    ace =>xs$ace_type(
    privilege_list => xs$name_list('jdwp'),
    principal_name => 'SCOTT',
    principal_type => xs_acl.ptype_db)
);
end;
/
スポンサーリンク