希望你也能帮助我。
我正在开发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)是,您必须将其授予根用户。