dataguard switchover的自动化脚本实现

data guard的主要功能就是作为备库来同步主库的数据变化,一般使用中物理standby使用的比较多。data guard显示威力的一个场景就是swithover了,即主备切换。这种切换方式执行时间很短,能够在一些灾难场景中极大的提高系统的可用性和稳定性。
自己在本地的环境中搭建了一套data guard的环境,开始比较生疏,切换中碰到了不少的问题,最后搭建完成,把切换中的一些细节信息都总结起来,整理成了一个初步的脚本。能够很方便的实现swith over

这个脚本适用于物理standby,在本地环境中反复测试,切换了十多次,还算是比较稳定的。
在脚本中也对需要切换的实例进行了基本的校验,保证不会出现低级错误。比如主库切为主库,备库切为备库等等。
当然对于一些更加细节的信息没有做过滤,比如对于归档gap的判定等。

PRI_DB=`sqlplus -s sys/oracle@$1 as sysdba
set feedback off
set pages 0
select database_role from v\\$database;
EOF`
echo $PRI_DB

if [[ $PRI_DB = 'PHYSICAL STANDBY' ]]
then  echo 'PRIMARY DB INSTANCE IS NOT '$1 ',PLEASE CHECK AGAIN'
exit
fi

PRI_DB=$1
#echo $PRI_DB

STD_DB=`sqlplus -s sys/oracle@$2 as sysdba
set feedback off
set pages 0
select database_role from v\\$database;
EOF`

if [[ $STD_DB = 'PRIMARY' ]]
then  echo 'STANDBY DB INSTANCE IS NOT '$2 ',PLEASE CHECK AGAIN'
exit
fi

STD_DB=$2

#export ORACLE_SID=$STD_DB
sqlplus -s sys/oracle@$PRI_DB as sysdba
break on db_name
set pages 50
set linesize 100
prompt
prompt Primary Instance
prompt ~~~~~~~~~~~~~~~~
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_DB
sqlplus -s sys/oracle@$STD_DB as sysdba
break on db_name
set pages 50
set linesize 100
prompt
prompt Standby Instance
prompt ~~~~~~~~~~~~~~~~
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

sqlplus  sys/oracle@$STD_DB as sysdba
prompt recover managed standby database cancel;
recover managed standby database cancel;
EOF

#export ORACLE_SID=$PRI_DB
sqlplus  sys/oracle@$PRI_DB as sysdba
prompt Alter database commit to switchover to physical standby with session shutdown;
Alter database commit to switchover to physical standby with session shutdown;
EOF

sqlplus  sys/oracle@$PRI_DB as sysdba
prompt shutdown immediate;
shutdown immediate;
EOF

sqlplus  sys/oracle@$PRI_DB as sysdba
prompt startup mount
startup mount
prompt recover managed standby database disconnect from session;
recover managed standby database disconnect from session;
EOF

#export ORACLE_SID=$STD_DB
sqlplus  sys/oracle@$STD_DB as sysdba
Select 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          PRIMARY

Standby Instance
~~~~~~~~~~~~~~~~
      DBID DB_NAME     INST_NUM INST_NAME        DATABASE_ROLE
---------- --------- ---------- ---------------- ----------------
1028247664 TEST11G            1 DG11G            PHYSICAL STANDBY

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
idle> recover managed standby database cancel
idle> Media recovery complete.
idle> 
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
sys@TEST11G> Alter database commit to switchover to physical standby with session shutdown
sys@TEST11G> 
Database altered.
sys@TEST11G> 
idle> shutdown immediate
idle> ORA-01507: database not mounted
ORACLE instance shut down.
Connected to an idle instance.
idle> startup mount
idle> ORACLE instance started.
Total System Global Area  435224576 bytes
Fixed Size                  1337044 bytes
Variable Size             272632108 bytes
Database Buffers          155189248 bytes
Redo Buffers                6066176 bytes
Database mounted.
idle> recover managed standby database disconnect from session
idle> Media recovery complete.
NAME      SWITCHOVER_STATUS
--------- --------------------
TEST11G   SWITCHOVER LATENT
idle> alter database recover managed standby database finish force
idle> 
Database altered.
NAME      SWITCHOVER_STATUS
--------- --------------------
TEST11G   TO PRIMARY

idle> alter database commit to switchover to primary
idle> 
Database altered.
NAME      DATABASE_ROLE
--------- ----------------
TEST11G   PRIMARY
idle> 
INSTANCE_NAME    STATUS
---------------- ------------
DG11G            MOUNTED
idle> alter database open
idle> 
Database altered.

时间: 2024-09-21 13:52:31

dataguard switchover的自动化脚本实现的相关文章

求助IronPyhton测试CS架构的自动化脚本实例

问题描述 求助IronPyhton测试CS架构的自动化脚本实例 初学者,完全找不关于IronPyhton自动化测试脚本实例,只要开发实例,求助IronPyhton测试CS架构的自动化脚本实例,哪怕是一个简单的登录也可以,就是不知道应该调用哪些函数 ,如何定位一个文本框输入数据,定位按钮等,谢谢

用psake来简化自动化脚本的构建

psake是一个集成了PowerShell的用来创建自动化脚本的工具,其2.01版本集成了PowerShell2.0.Ayende Rahien正使用它来创建Rhino工具.psake项目的拥有者James Kovacs向我们解释了该工具最新版本的改进之处: psake最新版本通过使用构建脚本中的PowerShell语法,避免了与可执行的XML文件相关的尖括号标识(<>).psake借鉴了rake(即Ruby中的make)和bake(即Boo中的make)的语法结构,但它更容易用来编写脚本,因

自动化测试-RFS中上传文档自动化脚本,集成在jenkins中执行不通过,不知道怎么解决?

问题描述 RFS中上传文档自动化脚本,集成在jenkins中执行不通过,不知道怎么解决? RFS中web上传文档(非标准上传控件)自动化脚本,集成在jenkins里运行,脚本是执行通过了,但实际图片并没有上传成功? 说明:上传图片脚本用到了AutoItLibrary库,执行过程中需要打开windows选择文件界面,但jenkins中运行脚本的语句pybot是在后台执行,并不会打开界面,所以导致上传图片不成功.

论漏洞和自动化脚本的区别

什么是漏洞? 我先抄一段百度百科. 漏洞是在硬件.软件.协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统. 摘取其中的三个关键点: 1.系统缺陷 2.能被未授权利用 3.利用后能达到某种目的或效果 我们来举几个利用漏洞买月饼的思路(漏洞实例与截图均来自于互联网): 1.篡改金额 实例:某平台订单支付时的总价未验证漏洞(支付逻辑漏洞) 很多系统在设计的时候,未对商品的价格进行校验.导致你提交的购买的http包内说这个商品价格多少钱,系统就会认为这个商品多

Rational Performance Tester中实现条件循环的自动化脚本示例

随着需求的不断变化,自动化正在变得日益复杂.要适应这一情况,我们需要以更加智能的方式开发自动化框架.决策控制是实现复杂自动化的关键概念之一. 在 IBM® Rational® Performance Tester 中,您可以将部分测试定义为 条件循环,也就是指运行指定次数的运行.您可以根据次数.时间 设置循环的持续时间,或将其设置为无限 次.但是,软件没有提供相应的方法来动态设置循环的目标值.Rational Performance Tester 初学者可能没有样例代码来迅速上手.因此,本文的目

同步数据库自动化脚本

同步数据库自动化脚本 #!/bin/sh  www.bitsCN.com read -p "Please keyin your ssh host:" -t 30 host_ip read -p "Please keyin your ssh user:" -t 30 username read -p "Please keyin your ssh pass:" -t 30 password read -p "Please keyin you

photoshop动作自动化脚本语言教程

自动化对每个设计师的工作来说是很有用的.它可以在重复的任务上节省宝贵的时间,还能够帮我们更快捷.更容易的解决一系列问题. 你可以使用photoshop的动作来使工作流程自动化,这是很流行的,大多数人都知道并且已经在使用的方法.今天,我们将介绍给你一种高级的自动化技巧:脚本语言.所有的这一切仅仅需要你有一点点关于JavaScript的基本知识,这对于我们中的一些网页设计师往往都是具备的. 我很多年前就知道Photoshop的脚本语言,但是我几个月前才开始决定研究它.我忽视了它是因为我认为那是聪明的

oracle 11GR2 dataguard SWITCHOVER FAILOVER

1. switch:用户主动切换: 2. failover:主库出现故障,强行切换: switchover:一般switchover切换都是计划中的切换,特点是切换后,不会丢失任何数据,而且这个过程是可逆的,整个dataguard环境不会被破坏,原来dataguard环境中的所有物理和逻辑standby都可以继续工作. 在进行dataguard的物理standby切换前需要注意: 1.确认主库和从库间网络连接通畅: 2.确认没有活动的会话连接在数据库中: 3.primary数据库处于打开的状态,

Oracle12c DataGuard switchover的例子

12c dataguard提供了新的语法来实现dg的switchover.下面进行测试下. 主库执行检查 SQL> ALTER DATABASE SWITCHOVER TO orcldg VERIFY;  --主库进行切换检查 ALTER DATABASE SWITCHOVER TO orcldg VERIFY * ERROR at line 1: ORA-16475: succeeded WITH warnings, CHECK alert log FOR more details  --查看