Di posting kali ini saya akan membagikan cara bagaimana mengatasi error saat melakukan exec pada UTL_MAIL di database Oracle yaitu error ORA-24247: network access denied by access control list (ACL) ORA-06512 hal cukup mudah saat proses konfigurasi send mail di database oracle pada level user SYS, kadang kita lupa untuk mendaftar user pada table dba_network_acl_privileges , table tersebut hanya bisa di akses menggunakan user yang mempunyai privilege contohnya user SYS.
Pertama-tama kita pastikan dahulu user yang akan melakukan exec UTL_MAIL di table dba_network_acl_privileges
SELECT * FROM DBA_NETWORK_ACL_PRIVILEGES
Kemudian cek ada datanya tidak di table tersebut, jika ada datanya silahkan cek di kolom PRINCIPAL user yang akan melakukan exec UTL_MAIL sudah ada atau belum. Jika belum kita akan akan menambahkannya
BEGIN DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILAGE ( acl => '/sys/acls/acl_bbo_sendmail_emapdrc.xml', principal => 'NAMA_USER_AGAN', is_grant => TRUE, privilage => 'connect'); END; COMMIT;
begin DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILAGE(acl=>’/sys/acls/acl_bbo_sendmail_emapdrc.xml’, principal => ‘NAMA_USER_AGAN’, is_grant => true, privilage => ‘connect’) end; commit;
Coba exec kembali function send mailnya, contoh script send email seperti berikut :
BEGIN UTL_MAIL.SEND ( SENDER => 'asf@codeitworld.cm', recipients => 'acep.sopian@gmail.co.id', subject => 'Test email database' MESSAGE => 'Hore Berhasil'); END;
Pastikan user yang akan melakukan exec sudah di mendapatkan grant SYS.UTL_HTTP, SYS.UTL_MAIL dan SYS.UTL_TCP
jika belum silahkan grant terlebih dahulu untuk ketiga function tersebut, code untuk grantnya :
1. GRANT EXECUTE ON SYS.UTL_HTTP TO NAMA_USER_AGAN; 2. GRANT EXECUTE ON SYS.UTL_MAIL TO NAMA_USER_AGAN; 3. GRANT EXECUTE ON SYS.UTL_TCP TO NAMA_USER_AGAN;
yang dapat memberikan hak akses grant hanya beberapa user tertentu, yang paling sakti user SYS.
Sekian tutorial kali ini happy coding 🙂