Oracle 12c Apex 4.2 ORA-24247 ACL (access control list)禁止网络访



希望你也能帮助我。

我正在开发apex应用程序。

Oracle 12c APEX 4.2.  

我正在使用pdborcl中的工作空间wrk_projects。

我需要一些关于客户的信息。客户端将在同一域中操作。
所以我正在创建一个报告:

select utl_inaddr.get_host_name(sys_context('userenv','ip_address')) as hostname from dual;

当我运行它时:

报告错误:
ORA-24247 ACL禁止网络访问

我的问题是:我必须在容器中或在pdb中定义ACL ?
如何找出我必须授予ACL的用户?还有其他建议吗?

Oracle Apex文档:授予Oracle数据库连接权限12c

可以在"Oracle Application Express Application Builder用户指南->管理应用程序安全"

过程CREATE_ACL, ASSIGN_ACL, ADD_PRIVILEGE和CHECK_PRIVILEGE在Oracle数据库12c中,DBMS_NETWORK_ACL_ADMIN已弃用。Oracle建议使用APPEND_HOST_ACE。下面的例子控件的连接权限授予任何主机APEX_050000数据库用户。此示例假设您连接到安装Oracle Application Express的数据库为"SYS"指定SYSDBA角色。

BEGIN
    DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
        host => '*',
        ace => xs$ace_type(privilege_list => xs$name_list('connect'),
                           principal_name => 'apex_050000',
                           principal_type => xs_acl.ptype_db));
END;
/

下面的例子演示了如何提供较少的特权访问本地网络资源。此示例支持访问仅在本地主机上的服务器,例如电子邮件服务器和报表服务器。

BEGIN
    DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
        host => 'localhost',
        ace => xs$ace_type(privilege_list => xs$name_list('connect'),
                           principal_name => 'apex_050000',
                           principal_type => xs_acl.ptype_db));
END;
/

除此之外,这可能取决于您如何在数据库中配置apex。您是否在cdb中使用apex,并且apex对象是连接在一起的(因此:一个apex安装用于所有的db),或者您是否在每个pdb中使用不同的apex安装。我猜这只是一次安装。我的猜测(我不是DBA)是,您必须将其授予根用户。

最新更新