3

希望你也能帮助我。

我正在开发一个 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 的用户?还有其他提示吗?

4

1 回答 1

4

Oracle Apex 文档:在 Oracle Database 12c 中授予连接权限

可在“Oracle Application Express Application Builder 用户指南 -> 管理应用程序安全”下找到

Oracle Database 12c 中已弃用 DBMS_NETWORK_ACL_ADMIN 中的过程 CREATE_ACL、ASSIGN_ACL、ADD_PRIVILEGE 和 CHECK_PRIVILEGE。Oracle 建议改用 APPEND_HOST_ACE。以下示例演示如何为 APEX_050000 数据库用户授予任何主机的连接权限。此示例假定您以指定 SYSDBA 角色的 SYS 身份连接到安装了 Oracle Application Express 的数据库。

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 对象(因此:为所有 db 安装一个 apex)还是每个 pdb 使用不同的 apex 安装。我猜这只是单次安装。我的猜测(我不是 DBA)是您必须将其授予根用户。

于 2015-08-24T09:52:32.820 回答