分享给有需要的人
下面脚本通过网络判断主机是否被关机来执行自动切换
添加root对等信任
mxq1-> mkdir ~/.ssh
mxq1-> chmod 700 ~/.ssh
mxq1-> ssh-keygen -t rsa
mxq1-> ssh-keygen -t dsa
mxq2-> mkdir ~/.ssh
mxq2-> chmod 700 ~/.ssh
mxq2-> ssh-keygen -t rsa
mxq2-> ssh-keygen -t dsa
mxq1-> cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
mxq1-> cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys
mxq1-> ssh mxq2 cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
mxq1-> ssh mxq2 cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys
mxq1-> scp ~/.ssh/authorized_keys mxq2:~/.ssh/authorized_keys
下面脚本
#!/bin/bash
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
umask 022
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
LD_LIBRARY_PATH=/usr/lib:/usr/X11R6/lib
ORACLE_BASE=/filedata/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0.3/db_1
ORACLE_SID=oracle11
LD_LIBRARY_PATH=$ORACLE_HOME/rdbms/lib:$ORACLE_HOME/lib:$LD_LIBRARY_PATH
PATH=$ORACLE_HOME/bin:$PATH
export PATH LD_LIBRARY_PATH
export ORACLE_BASE ORACLE_HOME ORACLE_SID
#export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export PATH
#use ssh decide network status
#decide no 0 network at questio
#RETVAL return 0 AUTO SWITCH DATAGURAD
#It didn't gap execute
owner=oracle
ssh mx date >> /home/oracle/oracle.log 2>&1
RETVAL=$?
if [ $RETVAL -eq 0 ]
then
echo "remote service active "
else
echo "PRIMARY Host is down, please deal with as soon as possible"|mail -s 'dgexception monitoring' 邮件@qq.com
echo -n "input:YES /switch NO/Don't switch:"
read -t 5 verdict
if [ $verdict = YES ]; then
echo "AUTO SWITCH DATAGURAD"
su - $owner -c "sqlplus /nolog" << EOF >> /home/oracle/oracle.log
connect / as sysdba
host date
host sleep 1m
host date
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
ALTER DATABASE OPEN;
exit
EOF
elif [ $verdict = NO ]; then
echo " not switch "
else
echo " not switch "
fi
fi
下面脚本通过网络判断主机是否被关机来执行自动切换
添加root对等信任
mxq1-> mkdir ~/.ssh
mxq1-> chmod 700 ~/.ssh
mxq1-> ssh-keygen -t rsa
mxq1-> ssh-keygen -t dsa
mxq2-> mkdir ~/.ssh
mxq2-> chmod 700 ~/.ssh
mxq2-> ssh-keygen -t rsa
mxq2-> ssh-keygen -t dsa
mxq1-> cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
mxq1-> cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys
mxq1-> ssh mxq2 cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
mxq1-> ssh mxq2 cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys
mxq1-> scp ~/.ssh/authorized_keys mxq2:~/.ssh/authorized_keys
下面脚本
#!/bin/bash
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
umask 022
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
LD_LIBRARY_PATH=/usr/lib:/usr/X11R6/lib
ORACLE_BASE=/filedata/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0.3/db_1
ORACLE_SID=oracle11
LD_LIBRARY_PATH=$ORACLE_HOME/rdbms/lib:$ORACLE_HOME/lib:$LD_LIBRARY_PATH
PATH=$ORACLE_HOME/bin:$PATH
export PATH LD_LIBRARY_PATH
export ORACLE_BASE ORACLE_HOME ORACLE_SID
#export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export PATH
#use ssh decide network status
#decide no 0 network at questio
#RETVAL return 0 AUTO SWITCH DATAGURAD
#It didn't gap execute
owner=oracle
ssh mx date >> /home/oracle/oracle.log 2>&1
RETVAL=$?
if [ $RETVAL -eq 0 ]
then
echo "remote service active "
else
echo "PRIMARY Host is down, please deal with as soon as possible"|mail -s 'dgexception monitoring' 邮件@qq.com
echo -n "input:YES /switch NO/Don't switch:"
read -t 5 verdict
if [ $verdict = YES ]; then
echo "AUTO SWITCH DATAGURAD"
su - $owner -c "sqlplus /nolog" << EOF >> /home/oracle/oracle.log
connect / as sysdba
host date
host sleep 1m
host date
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
ALTER DATABASE OPEN;
exit
EOF
elif [ $verdict = NO ]; then
echo " not switch "
else
echo " not switch "
fi
fi
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29065182/viewspace-1485098/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29065182/viewspace-1485098/
本文介绍了一种通过SSH实现的自动脚本,该脚本能够检测远程主机的状态,并在检测到主数据库不可用时,自动执行Data Guard切换流程。文章详细展示了如何设置SSH密钥信任以简化远程操作,并提供了具体的bash脚本示例。

被折叠的 条评论
为什么被折叠?



