Prueba de la accesibilidad del punto final de Azure

Para utilizar Autonomous Database con Azure AD, debe asegurarse de que la instancia de Autonomous Database puede acceder al punto final de Azure AD.

Para que una instancia de Autonomous Database acepte tokens OAuth2 de Azure AD, la base de datos debe solicitar la clave pública del punto final de Azure AD.
  • Ejecute la siguiente prueba para determinar si la base de datos se puede conectar al punto final de Azure AD:
    SET SERVEROUTPUT ON SIZE 40000
    DECLARE
      req UTL_HTTP.REQ;
      resp UTL_HTTP.RESP;
    BEGIN
      UTL_HTTP.SET_WALLET(path => 'system:');
      req := UTL_HTTP.BEGIN_REQUEST('https://login.windows.net/common/discovery/keys');
      resp := UTL_HTTP.GET_RESPONSE(req);
      DBMS_OUTPUT.PUT_LINE('HTTP response status code: ' || resp.status_code);
      UTL_HTTP.END_RESPONSE(resp);
    END;
    /

    Si esta prueba se realiza correctamente, aparece un mensaje PL/SQL procedure successfully completed.

    Si aparecen los siguientes mensajes, significa que una política de lista de control de acceso de red (ACL) de base de datos bloqueó la prueba y tendrá que definir temporalmente una política de lista de control de acceso para permitirle probar esto:

    ORA-29273: HTTP request failed
    ORA-24247: network access denied by access control list (ACL)
    1. Defina la ACL de la siguiente manera:
      BEGIN
      DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
        host => '*',
        ace  =>  xs$ace_type(privilege_list => xs$name_list('connect'),
                             principal_name => 'username_placeholder',
                             principal_type => xs_acl.ptype_db));
      END;
      /

      Sustituya username_placeholder por el nombre de usuario del usuario de base de datos que está ejecutando la prueba. Por ejemplo:

      BEGIN
      DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
        host => '*',
        ace  =>  xs$ace_type(privilege_list => xs$name_list('connect'),
                             principal_name => 'ADB_USER',
                             principal_type => xs_acl.ptype_db));
      END;
      /
    2. Vuelva a ejecutar la prueba.
    3. Elimine la ACL, porque ya no la necesita. Por ejemplo, para eliminar la ACL para adb_user:
      BEGIN
      DBMS_NETWORK_ACL_ADMIN.REMOVE_HOST_ACE(
        host => '*',
        ace  =>  xs$ace_type(privilege_list => xs$name_list('connect'),
                             principal_name => 'ADB_USER',
                             principal_type => xs_acl.ptype_db));
      END;
      /