Oracle Data Guard Sorun izleme betiği

Oracle DB, dünyada kurumsal seviyede kullanılan en yaygın veritabanıdır. Bunun en önemli sebebi performans, güvenilirlik ve sunduğu pek çok ek özelliktir.

Bu ek özelliklerden birisi Data Guard bieşenidir. Data Guard, aktif kullanımda olan veritabanı (primary database) üzerindeki hareketleri, bir veya daha çok uzak veritabanına (standby database) kopyalar. Mesela Ankara'da ana veri merkeziniz var. Burada yapılan tüm hareketleri, çalışma esnasında, İstanbul'daki veri merkezinize kopyalayabilirsiniz. böylece felaket durumunda veri ve servis kaybı olmaksızın sistemleriniz çalışmaya devam eder.

Data Guard 2 ana kısımdan oluşur.
  • log Aktarım (Transport): Ana veritabanındaki harekeketler log dosyaları olarak uzak veritabanına aktarılır
  • log Uygulama (Appy): Aktarılan loglar, pasif veritabanına uygulanır.
Data Guard çalışması sırasında, ağdan veya başka nedenlerle bu iki bileşende sorunlar çıkabilir. Bu sorunlar yüzünden aktif veritabanınız durma noktasına bile gelebilir. Bu yüzden data guard çalışması izlenmelidir; Loglar karşı tarafa iletildi mi, standby veritabanı üzerine uygulandı mı..?
check_dg.sh betiği bu amaçla yazıldı. Bir cron job olarak çalıştırılıyor..

Ön Gereksinimler:
  • Unix tabanlı aktif veritabanı üzerinde, oracle kullanıcısı altında -tercihen- cronjob ile çalıştırılmalıdır.
  • Unix makine üzerinde eposta yazılımı (sendmail vb) dış dünyaya eposta atabilecek şekilde konfigüre edilmiş olmalıdır
sendmail konfigürasyonu içinbiz Mail Relay host kullandık. Bunun için /etc/mail/sendmail.cf dosyası içerisinde DS anahtarı yanına boşluk bırakmadan dış eposta sunucusu yazılmalıdır. Şurada daha ayrıntılı bilgi var: sendmail config
oracle $ cat check_dg.sh
#check_dg.sh script (works on primary DB), monitors Data Guard log Apply and log Transport services..
#if local arc sequence is 20 greater than stby arc sequence, then there is a problem in log Transport..
#if stby arc sequence is 20 greater than stby apply sequence, then there is a problem in log Apply..
#written & revised by M. Selcuk Karaca at Turk Telekom in 17-08-2008 while waiting for CCB team friends..

#set Oracle environment for Sql*Plus
#ORACLE_BASE=/oracle/app/oracle ; export ORACLE_BASE
ORACLE_HOME=/oracle/app/oracle/product/10.2.0 ; export ORACLE_HOME
ORACLE_SID=usagedb ; export ORACLE_SID
PATH=$PATH:/oracle/app/oracle/product/10.2.0/bin

#set working directory. script is located here..
cd /oracle/scripts

#Problem statemnt is constructed in message variable
MESSAGE=""

#hostname of the primary DB.. used in messages..
HOST_NAME=`/usr/bin/hostname`

#who will receive problem messages.. DBAs e-mail addresses seperated with  space
DBA_GROUP='mskaraca@yahoo.com  '

#SQL statements to extract Data Guard info from DB
LOCAL_ARC_SQL='select archived_seq# from V$ARCHIVE_DEST_STATUS where dest_id=1; \n exit \n'
STBY_ARC_SQL='select archived_seq# from V$ARCHIVE_DEST_STATUS where dest_id=2; \n exit \n'
STBY_APPLY_SQL='select applied_seq# from V$ARCHIVE_DEST_STATUS where dest_id=2; \n exit \n'

#Get Data guard information to Unix shell variables...
LOCAL_ARC=`echo $LOCAL_ARC_SQL | sqlplus -S / as sysdba | tail -2|head -1`
STBY_ARC=`echo $STBY_ARC_SQL | sqlplus -S / as sysdba | tail -2|head -1`
STBY_APPLY=`echo $STBY_APPLY_SQL | sqlplus -S / as sysdba | tail -2|head -1`

#commented after code tests.. maybe uncommented whle testing in future ..
#echo local arc is $LOCAL_ARC and stby arc is $STBY_ARC and stby apply is $STBY_APPLY

#Allow 20 archive logs for transport and Apply latencies...
let "STBY_ARC_MARK=${STBY_ARC}+20"
let "STBY_APPLY_MARK= ${STBY_APPLY}+20"
if [ $LOCAL_ARC -gt $STBY_ARC_MARK ] ; then
  MESSAGE=${MESSAGE}"$HOST_NAME Standby -log TRANSPORT- servisinde Hata! \n local_Arc_No=$LOCAL_ARC but stby_Arc_No=$STBY_ARC \n"
fi

if [ $STBY_ARC -gt $STBY_APPLY_MARK ] ; then
  MESSAGE=${MESSAGE}"$HOST_NAME Standby -log APPLY- servisinde Hata! \n stby_Arc_No=$STBY_ARC but stby_Apply_no=$STBY_APPLY  \n"
fi

if [ -n "$MESSAGE" ] ; then
   MESSAGE=${MESSAGE}"\nDikkat: Standby DB tarafinda archive loglar 1 hafta geriye donuk silinmekte. Acele edin!!! \n .\n "
   echo  $MESSAGE | mailx -s "$HOST_NAME DataGuard Problemi"  $DBA_GROUP
fi

Yorumlar

Bu blogdaki popüler yayınlar

create Virtual Machines in VMware with ansible

Yüksek Hizmet Sürekliliği (High Availability)