原先在oracle9上的一个存储过程可以正常发邮件,现将oracle升级到11这个存储过程就出错:
ora-24247:网络访问被访问控制列表(acl)拒绝
ora-06512:在“SYS.UTL_TCP”
ora-06512:在“SYS.UTL_TCP”
ora-06512:在“SYS.UTL_SMTP”
ora-06512:在“SYS.UTL_SMTP”请教高手我应该怎么解决?请详细说明,谢谢!

解决方案 »

  1.   

    需要先使用 DBMS_NETWORK_ACL_ADMIN.CREATE_ACL 创建访问控制列表(ACL),
    再使用 DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL 将此 ACL 与邮件服务器相关联,
    最后使用 DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE 在此 ACL 为用户授与连接邮件服务器的权限。
      

  2.   

    楼上的能不能说个详细点的,我ACL也权限也添加了
    DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE 要添加哪些权限啊
      

  3.   


    -- 创建 ACL
    BEGIN
     DBMS_NETWORK_ACL_ADMIN.CREATE_ACL (
      acl          => 'email_server_permissions.xml', 
      description  => 'Enables network permissions for the e-mail server',
      principal    => 'email_user',
      is_grant     => TRUE, 
      privilege    => 'connect');
    END;
    /-- 与邮件服务关联
    BEGIN
     DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL (
      acl         => 'email_server_permissions.xml',
      host        => 'smtp_server', 
      lower_port  => port); 
    END;
    /-- 这样 email_user 用户帐户创建的存储过程便可以向此邮件服务器发送邮件