物理standby的Failover

参考与:《三思笔记》此书

 

物理standby的 failover

注意几点:

1 failover 之后,primary 数据库默认不再是data guard 配置的一部分。

2 多数情况下,其它逻辑/物理standby 数据库不直接参与failover的过程,因此这些数据库不需要做任何操作。

3 某些情况下,新的primary 数据库配置之后,需要重新创建其它所有的standby 数据库。

另外,如果待转换角色的standby 处于maximum protection maximum availability 模式的话,归档日志应该是连续存在的,这种情况下你可以直接从第3 步执行,否则建议你按照操作步骤从第1 步开始执行。

 

一般情况下failover 都是表示primary 数据库瘫痪,最起码也是起不来了,因此这种类型的切换基本上不需要primary 数据库做什么操作。所以下列步骤中如果有提到primary 和standby 执行的,只是建议你如果primary还可以用,那就执行一下,即使它能用你却不执行,也没关系,不影响standby 数据库的切换:)

1、检查归档文件是否连续

查询待转换standby 数据库的V$ARCHIVE_GAP 视图,确认归档文件是否连接:

SQL>SELECT THREAD#, LOW_SEQUENCE#,HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;

 

no rows selected

 

如果返回的有记录,按照列出的记录号复制对应的归档文件到待转换的standby 服务器。这一步非常重要,必须确保所有已生成的归档文件均已存在于standby 服务器,不然可能会数据不一致造成转换时报错。文件复制之后,通过下列命令将其加入数据字典:

注册:gap文件:

SQL> ALTER DATABASE REGISTER PHYSICAL  LOGFILE  'filespec1';

 

 

 

 

2、检查归档文件是否完整

分别在primary/standby 执行下列语句:

该语句取得当前数据库各线程已归档文件最大序号,如果primary 与standby 最大序号不相同,必须将多出的序号对应的归档文件复制到待转换的standby 服务器。不过既然是failover,有可能primary 数据库此时已经无法打开,甚至无法访问。

 

3、启动failover执行下列语句

 

15:30:42 scott@felix SQL>conn / assysdba

Connected.

15:30:51 sys@felix SQL>alter database recover managedstandby database finishforce;

 

Database altered.

 

FORCE 关键字将会停止当前活动的RFS 进程,以便立刻执行failover

 

 

15:30:58 sys@felix SQL>select  swtichover_status  from v$database;

select swtichover_status from v$database

      *

ERROR at line 1:

ORA-00904: "SWTICHOVER_STATUS":invalid identifier

 

 

15:31:21 sys@felix SQL>select  status  from  v$instance;

 

STATUS

------------------------

MOUNTED

我们可以发现备库已经由open变成mount状态;

 

 

15:42:07 sys@felix SQL>alter database  open;

 

Database altered.

 

15:42:18 sys@felix SQL>

 

 

剩下的步骤就与前面switchover 很相似了

 

4、切换物理standby 角色为primary

 

15:42:18 sys@felix SQL>alter database commit to switchover to primary;

 

Database altered.

 

15:45:18 sys@felix SQL>select switchover_status from v$database;

 

SWITCHOVER_STATUS

----------------------------------------

NOT ALLOWED

 

 

15:45:38 sys@felix SQL>select  open_mode  from v$database;

 

OPEN_MODE

----------------------------------------

MOUNTED

 

15:48:16 sys@felix SQL>alter database open;

 

Database altered.

 

15:48:36 sys@felix SQL>select open_mode  from v$database;

 

OPEN_MODE

----------------------------------------

READ WRITE

 

 

此时primary 数据库已经不再是data guard 配置的一部分,我们需要做的就是尝试看看能否恢复原primary 数据库,将其改造为新的standby服务器。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值