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)
- 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;
/
- Vuelva a ejecutar la prueba.
- 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;
/