Home / MAKALELER / Veri Tabanı / UTL_SMTP kullanarak e-posta göndermek – ORA24247’nin çözümü

UTL_SMTP kullanarak e-posta göndermek – ORA24247’nin çözümü

ORA-24247’nın çözümü

 

Unix crontab da çalıştırdığım oracle scriptlerde sonucu mail olarak alabiliyordum. Bu defa crontab yerine oracle job tanımlayarak procedure leri çalıştırmak istedim. Oracle 11gR2 de tanımladığım job ile UTL_SMTP kullanarak e-posta göndermek için yazdığım oacle proceduru execute ettiğimde aşağıdaki hatayı aldım.

 

EXEC TEST.PROC_SEND_MAIL

 

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 246

ORA-06512: at “SYS.UTL_SMTP”, line 127

ORA-06512: at “SYS.UTL_SMTP”, line 150

ORA-06512: at ” TEST.TEST_MAIL_PKG”, line 47

ORA-06512: at “TEST.PROC_SEND_MAIL”, line 14

ORA-06512: at line 1

 

Sevdiğim bir başarılı network mühendisi arkadaşın “iyi mühendis iyi google kullanandır” söyleminden yola çıkarak google’a  başvurduğumda bi kaç hatalı denemeden sonra konunun çözümünü buldum.

 

Öncelikle SYSDBA olarak veritabanına bağladıktan sonra aşağıdaki sql i çalıştırıyoruz. İnitial privilege ayarlıyarak  bir access control list (ACL) oluşturuyoruz.

 

begin

dbms_network_acl_admin.create_acl (

acl => ‘utlpkg.xml’,

description => ‘ACL for user to connect to SMTP Server’,

principal => ‘ORACLE_USERNAME’,

is_grant => TRUE,

privilege => ‘connect’);

end;

/

Commit;

 

Daha sonra oluşturduğumuz acl’i  mail serverımızın hostuna atıyoruz  ve TCP port aralığı isteğe bağlı olarak belirtebiliyoruz.

 

BEGIN

DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL (

acl => ‘utlpkg.xml’,

host => ‘mailserver.domain.name’, — yada mail server host ip

lower_port => 1,

upper_port => 10000);

END;

/

commit;

 

Son olarak ACL tanımlarken belirttiğimiz oracle_user’a network erişimi  için izin veriyoruz.

 

begin

dbms_network_acl_admin.add_privilege (

acl => ‘utlpkg.xml’,

principal => ‘ ORACLE_USERNAME’,

is_grant => TRUE,

privilege => ‘connect’);

end;

/

commit;

 

 

Bu 3 adımdan  sonra,  mail gönderemek için yazdığım proceduru çalıştırdığımda herhangi ORA hatası ile karşılaşmadan mail gönderebildim.

 

-bash-3.00$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Fri Nov 23 15:03:56 2012

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

 

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – 64bit Production

With the Partitioning, Automatic Storage Management, OLAP, Data Mining

and Real Application Testing options

 

SQL>

SQL> exec TEST.PROC_SEND_MAIL;

PL/SQL procedure successfully completed.

SQL>

About Yunus Emre Kilinc

Mersin Üniversitesi Bilgisayar Mühendisliği bölümünü bitirdikten sonra Ankara'da yaşamaya başladım. Şu anda Fatih Üniversitesinde İşletme yüksek Lisansı(MBA) na devam etmekteyim. 2010 yılında Oracle DBA eğitimi aldım. OCA 11gR2 sertifikasına sahibim. 2009 yılından beri Türk Telekom A.Ş de xDSL teknolojileri alanında çalışmaktayım. Oracle veritabanı yönetimi konularında kendimi geliştirmeye çalışmaktayım. İlgilendiğim ve kullandığım teknolojiler : Oracle SQL , PL/SQL Oracle 11g , Oracle 10g , UNIX (Sun Solaris), UNIX (HP-UX) ,OSI Model , IP ,DSL ,Unix Shell Scripting

İlginizi Çekebilir

SQL Server ile Veri Şifreleme

Bilgi teknolojilerinde verinin güvenliği çok kritik bir öneme sahiptir. Önemli verileri korumak için ekstra bir …

Bir Cevap Yazın