需求: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;/
因篇幅问题不能全部显示,请点此查看更多更全内容