检测Oracle的可用性和表空间容量
|
很多人也许并不了解,检测Oracle的可用性所需要的命令比简单的ping或者ps -ef | grep 等Oracle的命令要多得多。有观点认为它需要一个使用SQL*Net 来验证监听器已经开启并运行的测试访问Oracle这是用户经常用到的访问。通过实际地登录到实际环境中,你可以确认这个实例环境可以接受登录的,如果你只是做了以上的检测的话,你如何才能知道是否登录没有被接受,只是因为需要等待文档日志? . /u01/home/oracle/.profile /u01/app/oracle/admin/monitororcl exit instance_name2 tnsname2 sys_password_for_this_instance instance_name3 tnsname3 sys_password_for_this_instance #script : Rick Stehno # script will monitor to see if Oracle is up while [ "{GetProperty(Content)}" != "" ] do ORACLE_INSTANCE={GetProperty(Content)} ORACLE_TNS=$2 USR_ID=sys USR_PASS=$3 # echo "Instance: [$ORACLE_INSTANCE]" # echo "TNS [$ORACLE_TNS]" # echo "PASS: [$USR_PASS]" LOGFIL=/u01/app/oracle/admin/monitordev1.out NOTIFY_LIST=userid1@mobilephone.com,userid2,userid3@pagercompany.com # # 检测关键的段没有达到最大限度 sqlplus -s <$LOGFIL 2>/dev/null $USR_ID/$USR_PASS@$ORACLE_TNS set pages 0 select distinct "YES" from dba_segments where extents >= (max_extents-5) and segment_name not like "1.%"; EOF1 grep -i "^ORA-" $LOGFIL >/dev/null if [ $? -eq 0 ] then echo "{GetProperty(Content)} failed: check $ORACLE_INSTANCE for problems" | /bin/mailx - s "${ORACLE_INSTANCE} : Script failed" $NOTIFY_LIST exit 1 fi MAXEXTENTS_REACHED=`awk "{ print {GetProperty(Content)} }" $LOGFIL` if [ "$MAXEXTENTS_REACHED" = "YES" ] then echo "{GetProperty(Content)} failed: $ORACLE_INSTANCE max extents reached" | /bin/mailx - s "${ORACLE_INSTANCE} : max extents reached" $NOTIFY_LIST exit 1 fi # # 检测是否能分配下一个段 sqlplus -s <$LOGFIL 2>/dev/null $USR_ID/$USR_PASS@$ORACLE_TNS set pages 0 select distinct "YES" from dba_segments ds where next_extent > (select max(bytes) from dba_free_space where tablespace_name = ds.tablespace_name); EOF2 grep -i "^ORA-" $LOGFIL >/dev/null if [ $? -eq 0 ] then echo "{GetProperty(Content)} failed: check $ORACLE_INSTANCE for problems" | /bin/mailx - s "${ORACLE_INSTANCE} : Script failed" $NOTIFY_LIST exit 1 fi POSSIBLE_NEXTEXT_FAIL=`awk "{print {GetProperty(Content)} }" $LOGFIL` if [ "$POSSIBLE_NEXTEXT_FAIL" = "YES" ] then echo "{GetProperty(Content)} failed: $ORACLE_INSTANCE cannot extend segment" | /bin/mailx - s "${ORACLE_INSTANCE} : max extents reached" $NOTIFY_LIST exit 1 fi shift 3 # echo "shift done" done echo "Successful completion of {GetProperty(Content)}" `date` exit 0 |
