Skip to Main Content

 

Auswahl  

Debuggen in 12C mit Hilfe des SQL Developers 

Oracle
PL/SQL
RDBMS 12.x
25.06.18 (MP)
04.07.23(MP)
Oracle Neuerungen, PL/SQL, 12C Release 1

Passende Schulungen zum Thema

Der SQL Developer als Oracle-proprietäres Tool erfreut sich mittlerweile großer Beliebtheit. Entwicker, die den SQL Developer auch zum Debuggen nutzen, werden bei 12c-Datenbanken jedoch erst einmal eine neue Hürde überwinden müssen. Während für andere Tools, wie TOAD oder PL/SQL Developer, auch in Version 12c die Standard-Grants (DEBUG ANY PROCEDURE, DEBUG CONNECT SESSION) dafür ausreichen, wird für den SQL Developer zusätzlich eine ACL-Freigabe benötigt. Ohne ACL erhalten Sie folgende Fehlermeldung:

Verbindung mit der Datenbank O12c.
PL/SQL wird ausgeführt: ALTER SESSION SET PLSQL_DEBUG=TRUE
PL/SQL wird ausgeführt: CALL DBMS_DEBUG_JDWP.CONNECT_TCP( '10.0.0.21', '50229' )
ORA-24247: Netzwerkzugriff von Access Control-Liste (ACL) abgelehnt
ORA-06512: in "SYS.DBMS_DEBUG_JDWP", Zeile 68
ORA-06512: in Zeile 1
Prozess beendet.
Abmeldung von der Datenbank O12c.

Der Grund liegt darin, dass der Debugger des SQL Developers - im Gegensatz zu den oben genannten Tools - mit dem Package DBMS_DEBUG_JDWP ("Java Debug Wire Protocol") arbeitet. Und ab Version 12c ist dafür eine entsprechende Freigabe erforderlich. Diese wird über das Package DBMS_NETWORK_ACL_ADMIN erteilt, das hier schon einmal erwähnt wurde. Die Art der Freigabe lautet in diesem Fall jdwp:

BEGIN
   DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE( 
      host => '10.0.0.21', 
      ace  => xs$ace_type(
                privilege_list => xs$name_list('jdwp'),   
                principal_name => 'SCOTT',
                principal_type => xs_acl.ptype_db));  
END;
/

Als Host muss selbstverständlich der Rechner angegeben werden, auf dem der SQL Developer läuft. Die Angabe von Ports hat Tücken; am einfachsten ist es, Sie lassen sie ganz weg, wie hier gezeigt. Zwar können Sie im SQL Developer eine Port-Range für den Debugger einstellen, aber wenn Sie beim Aufruf von DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE sowohl lower_port als auch upper_port angeben, wird das mit dieser Fehlermeldung

ORA-24244: Ungültiger Host oder Port für Zuweisung der Access Control-Liste (ACL)
ORA-06512: in "SYS.DBMS_NETWORK_ACL_ADMIN", Zeile 1071

quittiert. Geben Sie NUR den lower_port an, so ist auch nur dieser EINE Port freigegeben. Nach erfolgreicher Freigabe können Sie - an diesem Rechner - den Debugger starten:

Verbindung mit der Datenbank O12c.
PL/SQL wird ausgeführt: ALTER SESSION SET PLSQL_DEBUG=TRUE
PL/SQL wird ausgeführt: CALL DBMS_DEBUG_JDWP.CONNECT_TCP( '10.0.0.21', '50815' )
Debugger hat Verbindung von Datenbank auf Port 50815 akzeptiert.
....

An jedem anderen Rechner bekommen Sie weiterhin die Fehlermeldung, dass die ACL abgelehnt wurde:

PL/SQL wird ausgeführt: CALL DBMS_DEBUG_JDWP.CONNECT_TCP( '10.0.0.190', '57524' )
ORA-24247: Netzwerkzugriff von Access Control-Liste (ACL) abgelehnt

SONSTIGE FUNKTIONEN VON DBMS_DEBUG_JDWP

Das Package DBMS_DEBUG_JDWP enthält übrigens noch zwei weitere, interessante Funktionen, über die sich SID und serial# der eigenen Session - auch ohne Admin-Rechte - ermitteln lassen. Und das nicht erst in 12c:

SELECT dbms_debug_jdwp.current_session_id,
       dbms_debug_jdwp.current_session_serial
  FROM DUAL;

ACEs sind dafür nicht erforderlich, da ja auf keine externe Ressource zugegriffen wird.

Sie möchten wissen, was ist denn eigentlich neu in der Oracle Datenbank Version 12c? Dann besuchen Sie unsere Schulung Neuerungen 12c und stöbern Sie in der Rubrik Oracle Neuerungen zu 12c Release 1 unserer Tipps & Tricks, hier finden Sie weitere kleine Hilfen, die das Leben mit Oracle 12c erleichtern. ;-)

Weitere Interessante Kurs-Tipps zum Thema

Das PL/SQL-Berechtigungskonzept in 12c
Dynamisch Netzwerkdateien in SQL auslesen
Oracle Live SQL
Oracle SQL Insert
PL/SQL Collection Beispiele

Besuchen Sie uns doch bei einer unsere über 50 Oracle Schulungen in München - Unterhaching, oder verfolgen Sie die Training per Videostreaming bequem vom Home Office oder Büro aus.