当前位置: 首页 > news >正文

dataguard switchover的自动化脚本实现 (r5笔记第48天)

data guard的主要功能就是作为备库来同步主库的数据变化,一般使用中物理standby使用的比较多。data guard显示威力的一个场景就是swithover了,即主备切换。这种切换方式执行时间很短,能够在一些灾难场景中极大的提高系统的可用性和稳定性。自己在本地的环境中搭建了一套data guard的环境,开始比较生疏,切换中碰到了不少的问题,最后搭建完成,把切换中的一些细节信息都总结起来,整理成了一个初步的脚本。能够很方便的实现swithover这个脚本适用于物理standby,在本地环境中反复测试,切换了十多次,还算是比较稳定的。在脚本中也对需要切换的实例进行了基本的校验,保证不会出现低级错误。比如主库切为主库,备库切为备库等等。当然对于一些更加细节的信息没有做过滤,比如对于归档gap的判定等。PRI_DB=`sqlplus -s sys/oracle@$1 as sysdba <<EOFset feedback offset pages 0select database_role from v\\$database;EOF`echo $PRI_DBif [[ $PRI_DB = 'PHYSICAL STANDBY' ]]then echo 'PRIMARY DB INSTANCE IS NOT '$1 ',PLEASE CHECK AGAIN'exitfiPRI_DB=$1#echo $PRI_DBSTD_DB=`sqlplus -s sys/oracle@$2 as sysdba <<EOFset feedback offset pages 0select database_role from v\\$database;EOF`if [[ $STD_DB = 'PRIMARY' ]]then echo 'STANDBY DB INSTANCE IS NOT '$2 ',PLEASE CHECK AGAIN'exitfiSTD_DB=$2#export ORACLE_SID=$STD_DBsqlplus -s sys/oracle@$PRI_DB as sysdba <<EOFbreak on db_nameset pages 50set linesize 100promptprompt Primary Instanceprompt ~~~~~~~~~~~~~~~~select d.dbid dbid , d.name db_name , i.instance_number inst_num , i.instance_name inst_name , d.database_role from v\$database d, v\$instance i;EOF#export ORACLE_SID=$STD_DBsqlplus -s sys/oracle@$STD_DB as sysdba <<EOFbreak on db_nameset pages 50set linesize 100promptprompt Standby Instanceprompt ~~~~~~~~~~~~~~~~select d.dbid dbid , d.name db_name , i.instance_number inst_num , i.instance_name inst_name , d.database_role from v\$database d, v\$instance i;EOFsqlplus sys/oracle@$STD_DB as sysdba <<EOFprompt recover managed standby database cancel;recover managed standby database cancel;EOF#export ORACLE_SID=$PRI_DBsqlplus sys/oracle@$PRI_DB as sysdba <<EOFprompt Alter database commit to switchover to physical standby with session shutdown;Alter database commit to switchover to physical standby with session shutdown;EOFsqlplus sys/oracle@$PRI_DB as sysdba <<EOFprompt shutdown immediate;shutdown immediate;EOFsqlplus sys/oracle@$PRI_DB as sysdba <<EOFprompt startup mountstartup mountprompt recover managed standby database disconnect from session;recover managed standby database disconnect from session;EOF#export ORACLE_SID=$STD_DBsqlplus sys/oracle@$STD_DB as sysdba <<EOFSelect name,switchover_status from v\$database;prompt alter database recover managed standby database finish force;alter database recover managed standby database finish force;select name,switchover_status from v\$database;prompt alter database commit to switchover to primary;alter database commit to switchover to primary;select name,database_role from v\$database;select instance_name,status from v\$instance;prompt alter database open;alter database open;EOF切换的日志如下,限于篇幅,适当做了整理。Primary Instance~~~~~~~~~~~~~~~~ DBID DB_NAME INST_NUM INST_NAME DATABASE_ROLE---------- --------- ---------- ---------------- ----------------1028247664 TEST11G 1 TEST11G PRIMARYStandby Instance~~~~~~~~~~~~~~~~ DBID DB_NAME INST_NUM INST_NAME DATABASE_ROLE---------- --------- ---------- ---------------- ----------------1028247664 TEST11G 1 DG11G PHYSICAL STANDBYConnected to:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsidle> recover managed standby database cancelidle> Media recovery complete.idle> Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionssys@TEST11G> Alter database commit to switchover to physical standby with session shutdownsys@TEST11G> Database altered.sys@TEST11G> idle> shutdown immediateidle> ORA-01507: database not mountedORACLE instance shut down.Connected to an idle instance.idle> startup mountidle> ORACLE instance started.Total System Global Area 435224576 bytesFixed Size 1337044 bytesVariable Size 272632108 bytesDatabase Buffers 155189248 bytesRedo Buffers 6066176 bytesDatabase mounted.idle> recover managed standby database disconnect from sessionidle> Media recovery complete.NAME SWITCHOVER_STATUS--------- --------------------TEST11G SWITCHOVER LATENTidle> alter database recover managed standby database finish forceidle> Database altered.NAME SWITCHOVER_STATUS--------- --------------------TEST11G TO PRIMARYidle> alter database commit to switchover to primaryidle> Database altered.NAME DATABASE_ROLE--------- ----------------TEST11G PRIMARYidle> INSTANCE_NAME STATUS---------------- ------------DG11G MOUNTEDidle> alter database openidle> Database altered.

相关文章:

  • 执行计划中的COLLECTION ITERATOR PICKLER FETCH导致的性能问题 (r5笔记第49天)
  • 关于Oracle重启数据库的一个bug(r5笔记第50天)
  • 一个清理脚本的改进思路(r5笔记第51天)
  • 我身边的一些数据库事故 (r5笔记第52天)
  • 关于网络捐款 (r5笔记第53天)
  • 11g Active DataGuard初探(r5笔记第54天)
  • 半自动化运维之动态添加数据文件(一) (r5笔记第55天)
  • 半自动化运维之动态添加数据文件(二) (r5笔记第56天)
  • 无法运行的update问题解析(r5笔记第57天)
  • shell中echo的显示格式 (r5笔记第58天)
  • 人的力量和大自然的力量 (r5笔记第59天)
  • 半自动化运维之快速连接到指定环境(一) (r5笔记第61天)
  • 巧用外部表备份历史数据(r5笔记第62天)
  • pl/sql中的forall简单测试(r5笔记第63天)
  • 一次ORA-00600问题的排查和分析(上)(r5笔记第64天)
  • [nginx文档翻译系列] 控制nginx
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • AHK 中 = 和 == 等比较运算符的用法
  • CSS 三角实现
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • js学习笔记
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • oschina
  • Python学习笔记 字符串拼接
  • Vue2.0 实现互斥
  • Web Storage相关
  • 从重复到重用
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 构建工具 - 收藏集 - 掘金
  • 关于 Cirru Editor 存储格式
  • 基于组件的设计工作流与界面抽象
  • 区块链共识机制优缺点对比都是什么
  • 实战|智能家居行业移动应用性能分析
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 用 Swift 编写面向协议的视图
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​【已解决】npm install​卡主不动的情况
  • ​2020 年大前端技术趋势解读
  • ​卜东波研究员:高观点下的少儿计算思维
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • #stm32驱动外设模块总结w5500模块
  • (1)(1.11) SiK Radio v2(一)
  • (3)STL算法之搜索
  • (JS基础)String 类型
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (八)Spring源码解析:Spring MVC
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (一一四)第九章编程练习
  • (转)scrum常见工具列表
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • (转载)Linux网络编程入门