Oracle
 sql >> Base de données >  >> RDS >> Oracle

ORA-24247 :accès au réseau refusé par la liste de contrôle d'accès (ACL) lors de l'envoi d'e-mails oracle

Vous n'avez pas besoin de commit , car aucune opération DML explicite n'est effectuée pour ces opérations. Et en utilisant begin..end blocs non nécessaires pour chaque méthode invoquant non plus.

Votre problème vient du fait qu'il est nécessaire d'invoquer Dbms_Network_Acl_Admin.Add_Privilege méthode avec privilege => 'connect' possibilité également. Vous pouvez donc utiliser les éléments suivants :

BEGIN
  DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(
                                    acl         => 'apex_user.xml',
                                    description => 'access to apex email',
                                    principal   => 'DBUSER',
                                    is_grant    => TRUE,
                                    privilege   => 'connect',
                                    start_date  => SYSTIMESTAMP,
                                    end_date    =>Null
                                    );
  DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(
                                       acl       => 'apex_user.xml',
                                       principal => 'DBUSER',
                                       is_grant  => true,
                                       privilege => 'connect'
                                       );

  DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(
                                       acl       => 'apex_user.xml',
                                       principal => 'DBUSER',
                                       is_grant  => true,
                                       privilege => 'resolve'
                                       );


  DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(
                                    acl         => 'apex_user.xml',
                                    host        => 'smtp.gmail.com',
                                    lower_port  =>587,
                                    upper_port  =>587
                                    );
 END;

Avec la requête suivante, tous les accès privilégiés peuvent être vérifiés (via les schémas SYS ou SYSTEM ):

select a.host,p.*
  from dba_network_acl_privileges p
  join dba_network_acls a on a.aclid = p.aclid
 order by a.host, p.principal, p.privilege;