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.