ORA-24247: network access denied by access control list (ACL)
Este mensaje es normal es un ambiente recien creado de Apex, donde no se ha habilitado los servicios de red.
Los servicios de red nos permiten realizar las siguientes acciones:
- EnvÃo de correo saliente en Oracle Application Express.
- Llamar a métodos desde el paquete APEX_MAIL.
- Consumir servicios web de Oracle Application Express.
- Realización de llamadas LDAP salientes desde Oracle Application Express.
- Impresión de reportes en PDF.
Para solventar el mensaje anterior basta con ejecutar como usuario SYS de la Base de datos el siguiente script para brindar el acceso requerido:
BEGIN
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
host => '*',
ace => xs$ace_type(privilege_list => xs$name_list('connect'),
principal_name => 'APEX_200100',
principal_type => xs_acl.ptype_db));
END;
/
Del script anterior cabe recalcar los siguientes puntos:
- El asterisco indica que se brinda acceso desde cualquier host. Puede ser reemplazado el valor por la palabra localhost para restringir el acceso solamente desde el servidor donde se encuentra instalada la Base de Datos.
- En el principal_name se brinda acceso al usuario APEX_200100.
- Este Script asumen que la versión de la Base de Datos siendo utilizada es 12c o superior.
NOTA: Si en caso se está utilizando una Base de Datos previa a la versión 12c se puede usar el siguiente script:
DECLARE
ACL_PATH VARCHAR2(4000);
BEGIN
SELECT ACL INTO ACL_PATH FROM DBA_NETWORK_ACLS
WHERE HOST = '*' AND LOWER_PORT IS NULL AND UPPER_PORT IS NULL;
IF DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE(ACL_PATH, 'APEX_200100',
'connect') IS NULL THEN
DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(ACL_PATH,
'APEX_200100', TRUE, 'connect');
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL('power_users.xml',
'ACL that lets power users to connect to everywhere',
'APEX_200100', TRUE, 'connect');
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL('power_users.xml','*');
END;
/
COMMIT;
THANK YOU
ResponderEliminar