среда, 16 марта 2016 г.

Debug в Oracle 12с

Если вы когда-либо запускали debug для Oracle 11G и младше, то все, что было нужно для запуска, это привилегии плюс скомпилированный для отладки кусок кода, который хочется запустить:
    1.  DEBUG CONNECT SESSION .
    2. EXECUTE для DBMS_DEBUG_JDWP.
    3. EXECUTE для процедуры, которую надо отладить.
    4. Сама процедура, для которой проведено “Compiled for Debug”.
    Для отладки в Oracle 12c все это по прежнему необходимо, но уже недостаточно. Есть большая вероятность, что при первом же запуске отладчика вы увидите это:
    Executing PL/SQL: CALL DBMS_DEBUG_JDWP.CONNECT_TCP( ‘192.168.0.10’, ‘49428’ )
    ORA-24247: network access denied by access control list (ACL)
    ORA-06512: at “SYS.DBMS_DEBUG_JDWP”, line 68
    ORA-06512: at line 1
    Process exited.
    Disconnecting from the database SCOTT – ORA12CTESTDB
    Это произошло с вами потому, что начиная с версии 12c, если вы хотите запустить отладку PL\SQL в базе через  отладчик, использующий Java Debug Wire Protocol (JDWP),  такой, как например SQL Developer или JDeveloper, то вам потребуются дополнительная настройка jdwp ACL привилегий для подключения к БД сессии через отладчик.
    Один из простых способов задать эти настройки выглядит так:

    BEGIN
    
     DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE
    
     (
    
     host => '192.168.0.10',
    
     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;
    

    Host может быть именем хоста, доменным именем, IP адресом или subnet-ом.

    Комментариев нет:

    Отправить комментарий