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;