oracle主、从自动切换方案

各个部分功能说明:

1、keepalived只用作vip功能;

2、check_oracle.sh脚本用于检测master服务,并执行vip、oracle切换;

通过“select status from v$instance;”获取master上oracle的数据状态,由返回值进行判断。

check_oracle.sh

#!/bin/sh

monitor_ip=192.168.3.186

ssh_port=22

logfile=/etc/keepalived/check_oracle.log

#check ssh port status

function check_ssh_port()

{

/usr/bin/nc -z -w 5 -n $monitor_ip $ssh_port 1 > /dev/nul

if [ $? = 0 ]; then

ssh_status=0

else

ssh_status=1

fi

return $ssh_status

}

#oracle_check_status

function check_oracle_helth()

{

source /home/oracle/.bash_profile

source /home/oracle/.bashrc

oracle_check_status=$(su - oracle -c "sqlplus sys/oracle@${monitor_ip}:1521/mydb as sysdba | grep -A 2 STATUS | sed -n '3p'" <

select status from v$instance;

EOF

)

if [ "$oracle_check_status" == OPEN ];then

oracle_status=0

else

oracle_status=1

fi

#echo $oracle_check_status

return $oracle_status

}

#update oracle slave to master

function change_oracle_status()

{

source /home/oracle/.bash_profile

source /home/oracle/.bashrc

su - oracle -c 'sqlplus / as sysdba' <

alter database recover managed standby database finish force;

alter database commit to switchover to primary with session shutdown;

alter database open;

EOF

}

check_time=5

#!=0

while [ $check_time -ne 0 ];do

let "check_time -= 1"

check_ssh_port

echo $ssh_status

if [ $ssh_status = 0 ];then

echo `date --date=today +"%Y-%M-%d %H:%m:%S"` - [INFO] - SSH ok, success_code:[$ssh_status]

echo `date --date=today +"%Y-%M-%d %H:%m:%S"` - [INFO] - start check oracle status......

check_oracle_helth

if [ $oracle_status = 0 ];then

echo `date --date=today +"%Y-%M-%d %H:%m:%S"` - [INFO] - ORACLE ok, success_code:[$oracle_status]

else

echo `date --date=today +"%Y-%M-%d %H:%m:%S"` - [INFO] - ORACLE Down, fail_code:[$oracle_status]

echo `date --date=today +"%Y-%M-%d %H:%m:%S"` - [INFO] - Keepalived stop......

ssh root@$monitor_ip '/etc/init.d/keepalived stop'

wait

echo `date --date=today +"%Y-%M-%d %H:%m:%S"` - [INFO] - Keepalived Already stop

echo `date --date=today +"%Y-%M-%d %H:%m:%S"` - [INFO] - Start update oracle slave stauts......

change_oracle_status

wait

echo `date --date=today +"%Y-%M-%d %H:%m:%S"` - [INFO] - Oracle slave update to master Success

sed 's/.*check_oracle.sh$//g' /var/spool/cron/root

/etc/init.d/crond restart

fi

else

echo `date --date=today +"%Y-%M-%d %H:%m:%S"` - [INFO] - SSH error 1, fail_code:[$ssh_status]

sleep 3

check_ssh_port

if [ $ssh_status = 0 ];then

echo `date --date=today +"%Y-%M-%d %H:%m:%S"` - [INFO] - SSH ok, success_code:[$ssh_status]

else

echo `date --date=today +"%Y-%M-%d %H:%m:%S"` - [INFO] - SSH error 2, fail_code:[$ssh_status]

sleep 3

check_ssh_port

if [ $ssh_status = 0 ];then

echo `date --date=today +"%Y-%M-%d %H:%m:%S"` - [INFO] - SSH ok, success_code:[$ssh_status]

else

echo `date --date=today +"%Y-%M-%d %H:%m:%S"` - [INFO] - SSH error 3, fail_code:[$ssh_status]

sleep 3

check_ssh_port

if [ $ssh_status = 0 ];then

echo `date --date=today +"%Y-%M-%d %H:%m:%S"` - [INFO] - SSH ok, success_code:[$ssh_status]

else

echo `date --date=today +"%Y-%M-%d %H:%m:%S"` - [INFO] - SSH error 4, fail_code:[$ssh_status]

sleep 3

check_ssh_port

if [ $ssh_status = 0 ];then

echo `date --date=today +"%Y-%M-%d %H:%m:%S"` - [INFO] - SSH ok, success_code:[$ssh_status]

else

echo `date --date=today +"%Y-%M-%d %H:%m:%S"` - [INFO] - SSH error 5, fail_code:[$ssh_status]

echo `date --date=today +"%Y-%M-%d %H:%m:%S"` - [INFO] - Start update oracle slave stauts......

change_oracle_status

wait

echo `date --date=today +"%Y-%M-%d %H:%m:%S"` - [INFO] - Oracle slave update to master Success

sed 's/.*check_oracle.sh$//g' /var/spool/cron/root

/etc/init.d/crond restart

fi

fi

fi

fi

fi

sleep 5

done

检测流程图:

脚本由crond执行,每1分钟执行一次,每执行一次,脚本内循环检测5次,首先判断服务器ssh端口是否正常,正常情况下,再去检查oracle状态,根据返回的状态决定是否进行切换,如果ssh端口异常,则进行5次检查判断,5次以内返回正常的话,则重新进行检测,如果第5次仍异常,则进行切换。

oracle sqlplus执行脚本_oracle主、从自动切换方案?我是这样实现的相关推荐

  1. oracle sqlplus执行脚本_连接Oracle出错:sqlplus quot;/as sysdbaquot;

    执行sqlplus "/as sysdba" 出现错误:sqlplus: error while loading shared libraries: /u01/app/oracle ...

  2. oracle执行命令显示2,oracle数据库执行脚本时常用命令总结

    收集了一篇oracle数据库执行脚本常用命令总结,希望给同学带来一些帮助. 1. 执行一个SQL脚本文件 代码如下 sqlplus user/pass@servicenamefile_name.sql ...

  3. hadoop主节点切换_hadoop2.0 HA的主备自动切换

    在<hadoop2.0 QJM方式的HA的配置>一文中介绍了HA的配置,是通过手工进行主备切换的.本文在这基础上,继续介绍HA的主备自动切换(automatic failover)的配置. ...

  4. 数据中心供配电系统主备用电源自动切换探究

    上海某数据中心征地250亩,一期建设规模100430㎡,包括1-3#三栋数据中心机房和1-2#两栋油机房.1-2#两栋维护支撑用房.一栋传输机房楼及一栋变电站,装机机架数8743个.一期各建筑用房建设 ...

  5. 应用程序主备库切换方案

    应用程序主备库切换方案 1. 概述 目的:异地容灾库已经搭建完毕,使用Oracle GoldenGate实现主库和备库的数据实时同步.如果主库存储发生故障,应用程序如何快速切换至备库. 主库和备库SC ...

  6. Oracle批量执行脚本文件

    在工作过程中遇到需要执行60多个存储的脚本,一个一个执行费时费力,总结一个批量执行脚本的方法: 第一步:cmd 打开DOS窗口,输入命令dir c:\users\procedure/s/b > ...

  7. mysql双主故障自动切换_MySQL主库高可用 -- 双主单活故障自动切换方案

    前言:(PS:前言是后来修改本文时加的)对于这篇文章,有博友提出了一些疑问和见解, 有了博友的关注,也促使我想把这套东西做的更实用.更安全.后来又经过思考,对脚本中一些条件和行为做了些改变.经过几次修 ...

  8. mysql双主故障自动切换_mysql双主热备宕机自动切换

    一.定义 通常说的「双机热备」是指两台机器都在运行,但并不是两台机器都同时在提供服务.当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短. 二.原理 Keepal ...

  9. linux更改桌面壁纸的脚本,ubuntu 桌面 壁纸 自动切换 方法 图解 linux

    ubuntu实在是不错的,桌面效果也是很炫酷的.而对于强大的linux实现win7的自动切换背景也是比较小儿科的.限于水平,讨论一个菜鸟级的方案,请批评指正,tangchao90908@sina.co ...

  10. 针对web服务器容灾自动切换方案

    思路: 当服务器A 发生故障,服务器B可以迅速接管服务器A的任务,不影响用户的正常访问. 当服务器A 故障恢复,服务器A可以马上接管服务器B的任务,服务器B恢复备机状态. 做法: 两台服务器上配置一个 ...

最新文章

  1. SQL Server孤立账户解决办法
  2. 科学就是要勇于承认错误:十大错误科学结论盘点
  3. activemenu怎么拼 vue_Vue-el-menu使用,点击按钮跳转指定页面
  4. 音频光端机简单故障处理
  5. Rxjs的flatMap使用
  6. android中的横幅通知
  7. oracle删除schema下所有对象,清空Schema中所有对象的步骤
  8. 转录组拼接软件Trinity使用安装报错锦集
  9. socket网络编程——UDP编程流程
  10. 一文了解推挽输出结构Output_push_pull
  11. java set 添加_Java Set add()用法及代码示例
  12. 2021-11-08
  13. Workbench网格分块分区划分 扫面、节点控制网格数的应用
  14. 根据一个包含汉字的字符串返回一个汉字拼音首字母的字符串
  15. 无线电波段和频谱的划分
  16. C. Minimum Ties (构造)
  17. Crushers is the determiner in mining industry
  18. Python数据分析三剑客学习笔记Day3——pandas包的使用:认识series类型,DataFrame类型,读取excel表格数据及数据操作
  19. 电脑无线网卡连接的无线信号不好的,经常丢包,掉线断网如何优化解决
  20. 小程序获取节点绑定数据data-index的方法

热门文章

  1. [导入]ASP.NET重用代码技术 - 用户控件技术
  2. 使用Microsoft Word中“多级列表”功能定制文档标题的方法
  3. Rsync服务及搭建备份服务器
  4. sql2012,返回数据多时不走索引
  5. ZK框架笔记3、窗体组件
  6. hrbust 1041(并查集)
  7. 强的离谱!串烧70+个Transformer模型,涵盖CV、NLP、金融、隐私计算...
  8. 【GPT-3】除了缺少点创意,GPT-3写出了及格的大学毕业论文,只需20分钟
  9. 【硬核课】最新《图卷积神经网络GCN》2020概述,76页ppt,NTU-Xavier Bresson,纽约大学深度学习课程...
  10. 【GNN】大热下的 GNN 研究面临哪些“天花板”?未来的重点研究方向又在哪?...