Je hebt geen commit
nodig , aangezien expliciete DML-bewerkingen voor deze bewerkingen niet worden uitgevoerd. En met behulp van begin..end
blokken ook niet nodig voor elke methode die wordt aangeroepen.
Uw probleem komt voort uit de noodzaak om Dbms_Network_Acl_Admin.Add_Privilege
aan te roepen methode met privilege => 'connect'
optie ook. U kunt dus het volgende gebruiken:
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;
Met de volgende query konden alle geprivilegieerde toegangen worden gecontroleerd ( via SYS- of SYSTEM-schema's ):
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;