Tipps & Tricks: Januar 2015 Bereich: PL/SQL Erstellung: 01/2015 HA Versionsinfo: 12c Letzte Überarbeitung: 01/2015 HA Debuggen in 12c mit dem SQL Developer 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 Muniqsoft GmbH Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40 IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0 Seite 1 von 2 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. ;-) Muniqsoft GmbH Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40 IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0 Seite 2 von 2