Du behøver ikke nogen commit
, da eksplicitte DML-operationer ikke udføres for disse operationer. Og ved at bruge begin..end
blokke er heller ikke nødvendige for hver metode, der påberåber sig.
Dit problem stammer fra det faktum, at det er nødvendigt at påkalde Dbms_Network_Acl_Admin.Add_Privilege
metode med privilege => 'connect'
mulighed også. Så du kan bruge følgende :
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;
Med følgende forespørgsel kunne alle privilegerede adgange kontrolleres (gennem SYS- eller SYSTEM-skemaer ):
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;