sql >> Database >  >> RDS >> Oracle

ORA-24247:netwerktoegang geweigerd door toegangscontrolelijst (ACL)

Ik heb een regelmatig geplande taak in een Oracle RAC-database die me een e-mailwaarschuwing voor een aandoening zal sturen. Dit gebeurt elke 30 minuten. De taak is mislukt op een van de knooppunten, maar niet op de andere. De taak spuugt deze fouten uit:

ORA-12012: error on auto execute of job "OWNER"."JOB_NAME"
ORA-24247: network access denied by access control list (ACL)
ORA-06512: at "SYS.UTL_TCP", line 17
ORA-06512: at "SYS.UTL_TCP", line 267
ORA-06512: at "SYS.UTL_SMTP", line 161
ORA-06512: at "SYS.UTL_SMTP", line 197
ORA-06512: at "SYS.UTL_MAIL", line 386
ORA-06512: at "SYS.UTL_MAIL", line 599
ORA-06512: at line 41

Het vreemde aan deze is dat het volgende in alle gevallen werkt:

SQL> exec utl_mail.send(sender=>'[email protected]', -
> recipients=>'[email protected]', -
> subject=>'test from orcl1', -
> message=>'test from orcl1', -
> mime_type=>'text; charset=us-ascii');
PL/SQL procedure successfully completed.

Dus als ik de e-mail op de instantie verzend, werkt het prima. Maar de taakeigenaar krijgt de fout. Maak dus een ACL aan en wijs bevoegdheden toe.

SQL> exec dbms_network_acl_admin.create_acl ( -
> acl=>'utl_mail_acl.xml', -
> description=>'ACL for using UTL_MAIL', -
> principal=>'OWNER', -
> is_grant=>TRUE, -
> privilege=>'connect', -
> start_date=>SYSTIMESTAMP, -
> end_date=>NULL);
PL/SQL procedure successfully completed.
SQL> exec dbms_network_acl_admin.assign_acl( -
> acl=>'utl_mail_acl.xml', -
> host=>'smtprelay.acme.com', -
> lower_port=>25, upper_port=>NULL);
PL/SQL procedure successfully completed.
SQL> commit;
Commit complete.

Nu werkt de procedure zoals aangegeven.


  1. Een Amazon Aurora-cluster maken

  2. Wanneer cursors te sluiten met MySQLdb

  3. Hoe vind je de schijfgrootte van een Postgres / PostgreSQL-tabel en zijn indexen?

  4. .csv importeren met tijdstempelkolom (dd.mm.jjjj uu.mm.ss) met psql \copy