【问题标题】:Oracle 12c Apex 4.2 ORA-24247 network access denied by access control list (ACL)Oracle 12c Apex 4.2 ORA-24247 网络访问被访问控制列表 (ACL) 拒绝
【发布时间】:2015-11-15 05:47:08
【问题描述】:

希望你也能帮助我。

我正在开发一个 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 连接到 DNS 设置 ACL。用户应该是 APEX 应用程序用户:apex_042000 或类似的...

标签: oracle oracle-apex oracle12c ora-24247


【解决方案1】:

Oracle Apex Documentation: Granting Connect Privileges in Oracle Database 12c

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

过程 CREATE_ACL、ASSIGN_ACL、ADD_PRIVILEGE 和 CHECK_PRIVILEGE DBMS_NETWORK_ACL_ADMIN 在 Oracle Database 12c 中已弃用。 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 对象(因此:为所有 db 安装一个 apex)还是每个 pdb 使用不同的 apex 安装。我猜这只是单次安装。我的猜测(我不是 DBA)是您必须将其授予 root 用户。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多