最近我们从 Oracle 10g 切换到 11g,现在我发现我的邮件功能不起作用,我现在收到错误:
ORA-24247: network access denied by access control list (ACL)
因此,我进行了一些谷歌搜索,发现 Oracle 11g 中的一个新功能现在限制用户使用某些软件包,包括 utl_smtp。因为我正在寻找一个快速的解决方案,所以我没有阅读 Oracle 文档,而是寻找更简单的解决方案,并发现了本教程:
https://www.pythian.com/blog/setting-up-network-acls-in-oracle-11g-for-dummies/
我稍微搞了一下,但因为我不知道更好,我想我添加了两个单独的配置 .xml 文件。所以我的问题的第一部分是 - 我如何删除它?
第二个问题是:
在向我的用户添加一些补助金后,我尝试测试它是否有效,但我很快意识到它没有:
SELECT DECODE(
DBMS_NETWORK_ACL_ADMIN.check_privilege('netacl.xml', 'TEST1', 'connect'),
1, 'GRANTED', 0, 'DENIED', NULL) privilege
FROM dual;
Returns:
PRIVILE
-------
DENIED
为什么?(已排序)
问题的第三部分 - 阅读后被拒绝,我尝试修复它,如下所示:
BEGIN
DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE('netacl.xml' ,'TEST1', TRUE, 'connect');
END;
但这给了我一个错误:
Ora19279 - XQuery dynamic type mismatch.....(more text meaning nothing to me).
为什么?(我发现,当您第二次向同一用户授予相同的权限时会发生该错误)
UPDATE
我遵循了下面凯文斯基的建议答案,并在这个过程中学到了很多东西,但是我仍然有一个问题。我仍然收到 ORA-24247: 网络访问被访问控制列表 (ACL) 拒绝。因为我按照建议做了其他所有事情,所以我开始认为问题可能是我添加的第一个配置文件,但现在无法删除,因为我不记得它的名称。如果有人可以帮助我,我将非常感激。
结果(我尝试了一些不同的事情):
select * from dba_network_acls;
Returns
* | 25 | 25 | /sys/acls/utl_smtp.xml| ACLID...
myservername.com | 25 | 25 | /sys/acls/utl_smtp.xml| ACLID...
myDBName | 25 | 25 | /sys/acls/utl_smtp.xml| ACLID...
mailServerDomainName | 25 | 25 | /sys/acls/utl_smtp.xml| ACLID...
mailserver.myDomain.local | 25 | 25 | /sys/acls/utl_smtp.xml| ACLID...