ups机制下停电提前关闭oracle数据库

本文介绍了一种利用bash脚本监测网络状态的方法,通过定期ping操作检查UPS保护机器与非UPS机器之间的网络连通性。当检测到连通性中断达到一定次数时,脚本会执行关闭UPS保护机器上数据库的命令,以预防潜在的断电风险。同时,文章提供了脚本示例和关键参数说明,确保在断电前采取适当措施。

   思路:在一个受ups保护的机器A1上写脚本,几分钟(如半分钟)ping不在ups保护的机器B,如果几次(如5次)ping不同,这时我们认为将要停电,此时脚本执行正常关闭受ups保护的机器上数据库的命令。注意,1-要保证在有电时A1和B的连通性,2-停电来电后,最好先开启B机器,然后开启其他机器。

check_ping.sh

#!/bin/bash

#检测主机
Server=172.18.88.11

#ping不通时临时结果保存位置
Ping_Result=/root/ping_result.tmp

#检测日志
LOG=/root/ping.log

#连续检测不通次数
CheckNum=5

#检查间隔时间
CheckInterval=30s

#当前已连续检测不通次数
Count=0

while true
do
    ping -w 3 $Server > $Ping_Result
    [ `grep 'time=' $Ping_Result|wc -l` -ge 1 ]
    Result=$?

    if [ $Result -eq 0 ]
    then
        Count=0
        echo >> $LOG
        echo `date +%Y-%m-%d_%H:%M:%S` 'check OK'>> $LOG
        echo >> $LOG
    else
        ((Count=$Count+1))
    
        echo >> $LOG
        echo `date +%Y-%m-%d_%H:%M:%S` 'ping error' >> $LOG
        echo 'ping result:'>> $LOG
        echo '    consecutive '$Count' times' >> $LOG
        echo '    连续第' $Count '次未ping通' >> $LOG
    echo 'ping detail:' >> $LOG
    cat $Ping_Result |xargs -i echo '    '{} >> $LOG
        echo >> $LOG

        if [ $Count -eq $CheckNum ]
        then        
            echo 'shutdown oracle ...' >> $LOG
            su - oracle -c '/home/oracle/stop.sh' >> $LOG 
            echo 'shutdown oracle complete' >> $LOG
            echo >> $LOG
            echo >> $LOG

            Count=0
        fi
    fi
    
    sleep $CheckInterval
done

stop.sh

#!/bin/sh

lsnrctl stop

sqlplus /nolog <<EOF
connect / as sysdba
shutdown abort
exit
exit

echo "oracle stop"

转载于:https://www.cnblogs.com/windyWu/p/4726208.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值