Çizelgelenmiş job için eposta bildirimi eklenmesi

21 Ara by Ahmet Duruöz

Çizelgelenmiş job için eposta bildirimi eklenmesi

Çizelgelenmiş job için eposta bildirimi tanımlamak mümkündür. Job ile ilgili bir yada birden fazla olaylar oluştuğunda e-posta gönderimi sağlanabilir.

Bildirim oluşturmadan önce aşağıdaki adımların tamamlanmış olması gerekiyor.

Öncelikle job’ı çalıştıran kullanıcı için network acl tanımı yapılıp yetkilerin verilmesi gerekiyor.  Bu konuyla ilgili detaylı bilgiye Network Access Control List nedir , nasıl kullanılır ? başlıklı makaleden ulaşabilirsiniz.

Sonrasında e-posta sunucusu adresi ayarlanmalıdır.

SQL> exec dbms_scheduler.set_scheduler_attribute('email_server','192.168.1.10');

smtp_out_server parametresi de ayarlanmalıdır.

SQL> alter system set smtp_out_server='192.168.1.10' scope=both sid='*';

System altered.

Ayrıca tanımlanan e-posta sunucusunda, veritabanı sunucuları için relay tanımı yapılması gerekmektedir.

Bu işlemler sonrasında DBMS_SCHEDULER.ADD_JOB_EMAIL_NOTIFICATION prosedürü ile bildirimler ekleyebiliriz.

Örnek :

Prosedürde ‘%’ karakteri ile parametreleri belirtebiliyoruz.

Birden fazla olay için bildirim oluşturmak :

BEGIN
 DBMS_SCHEDULER.ADD_JOB_EMAIL_NOTIFICATION (
  job_name   =>  'JOB_ISMI',
  recipients =>  'jobbildirim@deneme.com, jobbildirim@test.com',
  sender     =>  'do_not_reply@deneme.com',
  subject    =>  'Job Bildirimi-%job_owner%.%job_name%-%event_type%',
  body       =>   '%event_timestamp% tarihinde %event_type% olustu. %error_message%',
  events     =>  'JOB_FAILED, JOB_BROKEN, JOB_DISABLED, JOB_SCH_LIM_REACHED');
END;
/

Tek bir olay için bildirim oluşturmak :

BEGIN
 DBMS_SCHEDULER.ADD_JOB_EMAIL_NOTIFICATION (
  job_name         =>  'JOB_ISMI',
  recipients       =>  'jobbildirim@deneme.com',
  events           =>  'JOB_BROKEN');
END;
/

Belirli koşula göre bildirim oluşturmak :

Job failed olduğunda hata kodu 600 yada 700 ise bildirim gönderecektir.

BEGIN
 DBMS_SCHEDULER.ADD_JOB_EMAIL_NOTIFICATION (
  job_name   =>  'JOB_ISMI',
  recipients =>  'jobbildirim@deneme.com, jobbildirim@test.com',
  sender     =>  'do_not_reply@deneme.com',
  subject    =>  'Job Bildirimi-%job_owner%.%job_name%-%event_type%',
  body       =>   '%event_timestamp% tarihinde %event_type% olustu. %error_message%',
  events           => 'JOB_FAILED',
  filter_condition => ':event.error_code=600 or :event.error_code=700');
END;
/

Prosedürde event parametresi ile olay belirtilmezse aşağıdaki varsayılan olaylar için bildirim oluşacaktır.

JOB_FAILED,JOB_BROKEN,JOB_SCH_LIM_REACHED,JOB_CHAIN_STALLED,JOB_OVER_MAX_DUR

Bildirim oluşturulabilecek olaylar aşağıdaki gibidir :

  • job_all_events
  • job_broken
  • job_chain_stalled
  • job_completed
  • job_disabled
  • job_failed
  • job_over_max_dur
  • job_run_completed
  • job_sch_lim_reached
  • job_started
  • job_stopped
  • job_succeeded

Bu olaylar için tek tek bildirim tanımlanabildiği gibi birden fazla olay için tek bildirim de tanımlanabilir.

Tanımlı bildirimleri aşağıdaki gibi sorgulayabiliriz :

SQL> SELECT JOB_NAME, RECIPIENT, EVENT FROM DBA_SCHEDULER_NOTIFICATIONS;

JOB_NAME      RECIPIENT                EVENT
-----------   -----------------------  -------------------
TEST_USER     jobbildirim@deneme.com   JOB_FAILED
TEST_USER     jobbildirim@deneme.com   JOB_BROKEN
TEST_USER     jobbildirim@deneme.com   JOB_SCH_LIM_REACHED
TEST_USER     jobbildirim@deneme.com   JOB_DISABLED
TEST_USER     jobbildirim@test.com     JOB_FAILED
TEST_USER     jobbildirim@test.com     JOB_BROKEN
TEST_USER     jobbildirim@test.com     JOB_SCH_LIM_REACHED
TEST_USER     jobbildirim@test.com     JOB_DISABLED

Tanımlı bildirimlerin silinmesi :

Silme işlemi için DBMS_SCHEDULER.REMOVE_JOB_EMAIL_NOTIFICATION prosedürünü kullanabiliriz.

BEGIN
DBMS_SCHEDULER.REMOVE_JOB_EMAIL_NOTIFICATION (
job_name => 'JOB_ISMI',
recipients => 'jobbildirim@deneme.com, jobbildirim@test.com',
events => 'JOB_FAILED, JOB_BROKEN, JOB_DISABLED, JOB_SCH_LIM_REACHED');
END;
/

Bildirimleri kaldırmak için tek tek recipients ve events belirtebildiğimiz gibi yukarıdaki gibi toplu halde de bildirimleri kaldırabiliriz.

REMOVE_JOB_EMAIL_NOTIFICATION prosedürü ile ilgili aşağıdaki durumlara dikkat edilmesi gerekmektedir :

  • Events parametresi NULL gönderilirse, belirtilen alıcılar (recipients) için tanımlı tüm bildirimler kaldırılır.
  • Recipients parametresi NULL gönderilirse, belirtilen olaylar (events) için tanımlı tüm bildirilmler kaldırılır.
  • Hem Events hem Recipients parametreleri NULL gönderilirse , tüm tanımlı bildirimler kaldırılacaktır.
  • Bildirim kaldırma işlemi sırasında daha önceden tanımlanmamış bir bildirim kaldırılmaya çalışılırsa herhangi bir hata üretmeyecektir.

Loading

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir