मेरे पास Oracle RAC डेटाबेस पर नियमित रूप से निर्धारित कार्य है जो मुझे एक शर्त के लिए एक ईमेल अलर्ट भेजेगा। ऐसा हर 30 मिनट में होता है। कार्य एक नोड पर विफल हो रहा है, लेकिन अन्य पर नहीं। नौकरी इन त्रुटियों को उगलती है:
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
इसके बारे में अजीब बात यह है कि निम्नलिखित सभी मामलों में काम करता है:
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.
तो जब मैं उदाहरण पर ईमेल भेजता हूं, तो यह ठीक काम करता है। लेकिन नौकरी के मालिक को त्रुटि मिल रही है। तो एक एसीएल बनाएं और निजी असाइन करें।
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.
अब प्रक्रिया निर्देशानुसार काम करती है।