oracle sqlplus执行脚本_oracle主、从自动切换方案?我是这样实现的
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主、从自动切换方案?我是这样实现的相关推荐
- oracle sqlplus执行脚本_连接Oracle出错:sqlplus quot;/as sysdbaquot;
执行sqlplus "/as sysdba" 出现错误:sqlplus: error while loading shared libraries: /u01/app/oracle ...
- oracle执行命令显示2,oracle数据库执行脚本时常用命令总结
收集了一篇oracle数据库执行脚本常用命令总结,希望给同学带来一些帮助. 1. 执行一个SQL脚本文件 代码如下 sqlplus user/pass@servicenamefile_name.sql ...
- hadoop主节点切换_hadoop2.0 HA的主备自动切换
在<hadoop2.0 QJM方式的HA的配置>一文中介绍了HA的配置,是通过手工进行主备切换的.本文在这基础上,继续介绍HA的主备自动切换(automatic failover)的配置. ...
- 数据中心供配电系统主备用电源自动切换探究
上海某数据中心征地250亩,一期建设规模100430㎡,包括1-3#三栋数据中心机房和1-2#两栋油机房.1-2#两栋维护支撑用房.一栋传输机房楼及一栋变电站,装机机架数8743个.一期各建筑用房建设 ...
- 应用程序主备库切换方案
应用程序主备库切换方案 1. 概述 目的:异地容灾库已经搭建完毕,使用Oracle GoldenGate实现主库和备库的数据实时同步.如果主库存储发生故障,应用程序如何快速切换至备库. 主库和备库SC ...
- Oracle批量执行脚本文件
在工作过程中遇到需要执行60多个存储的脚本,一个一个执行费时费力,总结一个批量执行脚本的方法: 第一步:cmd 打开DOS窗口,输入命令dir c:\users\procedure/s/b > ...
- mysql双主故障自动切换_MySQL主库高可用 -- 双主单活故障自动切换方案
前言:(PS:前言是后来修改本文时加的)对于这篇文章,有博友提出了一些疑问和见解, 有了博友的关注,也促使我想把这套东西做的更实用.更安全.后来又经过思考,对脚本中一些条件和行为做了些改变.经过几次修 ...
- mysql双主故障自动切换_mysql双主热备宕机自动切换
一.定义 通常说的「双机热备」是指两台机器都在运行,但并不是两台机器都同时在提供服务.当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短. 二.原理 Keepal ...
- linux更改桌面壁纸的脚本,ubuntu 桌面 壁纸 自动切换 方法 图解 linux
ubuntu实在是不错的,桌面效果也是很炫酷的.而对于强大的linux实现win7的自动切换背景也是比较小儿科的.限于水平,讨论一个菜鸟级的方案,请批评指正,tangchao90908@sina.co ...
- 针对web服务器容灾自动切换方案
思路: 当服务器A 发生故障,服务器B可以迅速接管服务器A的任务,不影响用户的正常访问. 当服务器A 故障恢复,服务器A可以马上接管服务器B的任务,服务器B恢复备机状态. 做法: 两台服务器上配置一个 ...
最新文章
- SQL Server孤立账户解决办法
- 科学就是要勇于承认错误:十大错误科学结论盘点
- activemenu怎么拼 vue_Vue-el-menu使用,点击按钮跳转指定页面
- 音频光端机简单故障处理
- Rxjs的flatMap使用
- android中的横幅通知
- oracle删除schema下所有对象,清空Schema中所有对象的步骤
- 转录组拼接软件Trinity使用安装报错锦集
- socket网络编程——UDP编程流程
- 一文了解推挽输出结构Output_push_pull
- java set 添加_Java Set add()用法及代码示例
- 2021-11-08
- Workbench网格分块分区划分 扫面、节点控制网格数的应用
- 根据一个包含汉字的字符串返回一个汉字拼音首字母的字符串
- 无线电波段和频谱的划分
- C. Minimum Ties (构造)
- Crushers is the determiner in mining industry
- Python数据分析三剑客学习笔记Day3——pandas包的使用:认识series类型,DataFrame类型,读取excel表格数据及数据操作
- 电脑无线网卡连接的无线信号不好的,经常丢包,掉线断网如何优化解决
- 小程序获取节点绑定数据data-index的方法
热门文章
- [导入]ASP.NET重用代码技术 - 用户控件技术
- 使用Microsoft Word中“多级列表”功能定制文档标题的方法
- Rsync服务及搭建备份服务器
- sql2012,返回数据多时不走索引
- ZK框架笔记3、窗体组件
- hrbust 1041(并查集)
- 强的离谱!串烧70+个Transformer模型,涵盖CV、NLP、金融、隐私计算...
- 【GPT-3】除了缺少点创意,GPT-3写出了及格的大学毕业论文,只需20分钟
- 【硬核课】最新《图卷积神经网络GCN》2020概述,76页ppt,NTU-Xavier Bresson,纽约大学深度学习课程...
- 【GNN】大热下的 GNN 研究面临哪些“天花板”?未来的重点研究方向又在哪?...