Oracle veritabanı ORA hatalarının periyodik olarak e-posta ile bildirimi

9 May by Ahmet Duruöz

Oracle veritabanı ORA hatalarının periyodik olarak e-posta ile bildirimi

Oracle veritabanlarında oluşan ORA- şeklinde hataların belirli periyodlarla e-posta adresine gönderimini sağlayabilirsiniz. Bunun için ADRCI: ADR Command Interpreter kullanılabilir. Aşağıdaki gibi bir script ile adrci kullanılarak ilgili trace dizinlerdeki alert log dosyalarındaki ORA- şeklindeki hatalar e-posta şeklinde bildirimi sağlanabilir.

Script içerisindeki J , ilgili node’daki instance numarasını belirtmektedir. Single instance için bu kullanılmamalıdır. Örnek script’te 3 veritabanı ORCL ORCLTEST ORCLDEV için işlem yapılmaktadır. mg parametresi e-postanın gönderileceği adresi belirtir. E-posta gönderimi UTL_MAIL.SEND fonksiyonu ile ORCL veritabanı üzerinden yapılmaktadır.
UTL_MAIL paketinin kullanımı için gerekli ayarların (ACL , smtp_out_server vs) yapılmış olması gerekmektedir.

Script içeriği :

Script’i oraerr.sh şeklinde bir script içine yazıp ilgili dosyanın modunun 755 olmasını sağlayın.

 

#!/bin/bash
RDBMSUSERPROFILE=/home/oracle/.profile.ORCL
. $RDBMSUSERPROFILE

path1="/u01/app/oracle/diag/rdbms/prod/PROD/trace"
path2="/u01/app/oracle/diag/rdbms/test/TEST/trace"
path3="/u01/app/oracle/diag/rdbms/dev/DEV/trace"

paths=($path1 $path2 $path3 )
dbs=(PROD TEST DEV)
for (( i = 0 ; i < ${#dbs[@]} ; i++ )) 
do
 db=${dbs[$i]}$j
 mg="aduruoz@interiva.com"
 cd  ${paths[$i]} 
 adrci exec="show alert -p  \\\"message_text like '%ORA-%' and message_text not like '%ORA-3136%'  and message_text not like '%ORA-28%' and message_text not like '%ORA-
48913%' and message_text not like '%ORA-609%' and originating_timestamp > systimestamp - 1/144 \\\" -term " >  adrciVarORCL.tmp
   sed -i '1d'  adrciVarORCL.tmp
   sed -i '1d'  adrciVarORCL.tmp
   sed -i '1d'  adrciVarORCL.tmp
   
   mb="<b><font color=\"red\">$db</font></b><br/>"
   k=0
   while read line
   do
      line=$line| tr -d '\n'
      mb=$mb$line"<br/>" 
      k=1
   done <adrciVarORCL.tmp
if [ $k -eq 1 ];
then
   sqlplus / as sysdba << EOF
     exec UTL_MAIL.SEND('oracle@interiva.com.tr','$mg' ,NULL,NULL,'$db Ora Hatasi ','$mb' , 'text/html; charset=us-ascii',NULL);
EOF
fi
done


 

Yukarıdaki gibi içeriği olan script ile her 10 dakika da bir ,son 10 dakikada oluşan ORA- hatalarının gönderimi için oracle kullanıcısının crontab’ına aşağıdaki gibi ekleme yapın.

#ora- hata kontrol 
00,10,20,30,40,50 * * * * /u01/scripts/oraerr.sh

 

Sonrasın düzenli olarak her 10 dakikada bir ilgili veritabanlarında son 10 dakika içinde oluşan hatalar bildirilecektir.

 

Loading

Bir yanıt yazın

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