搜索
您的当前位置:首页正文

oracle 发送邮件(job,ORA-24247: network access denied by access control list (ACL))

来源:易榕旅网

需求:oracle中监测job的执行,job完成后自动发送邮件至指定邮箱。

           1. 用了上一篇文章的存储过程sendmail_proc以system登录进去,test 是 发邮件正常,

            2. 但是用其它存储过程Call_proc调用就不行了。报 24247错误。发现是权限问题

            3. 于是在调用的存储过程Call_proc 的AS前面加 :AUTHID CURRENT_USER。 test正常

            4. 但是在Job的what里面调用Call_proc,依然提示 24247 错误。

             5. 这时候我想死了。但是经过一段时间的研究发现了解决方案,供遇到同一问题的同学们参考。
每一步创建 ACL
begin
dbms_network_acl_admin.create_acl (
acl             => 'utlpkg_SENDMAIL.xml',
description     => 'Normal Access',
principal       => 'CONNECT',
is_grant        => TRUE,
privilege       => 'connect',
start_date      => null,
end_date        => null
);
end;/

第二步添加权限,假如这里我们是给SYSTEM用户添加connect权限

begin
dbms_network_acl_admin.add_privilege (
acl  => 'utlpkg_SENDMAIL.xml',
principal => 'SYSTEM',
is_grant => TRUE,
privilege => 'connect',
start_date => null,
end_date => null);
end;/

因篇幅问题不能全部显示,请点此查看更多更全内容

Top