首页  >  文章  >  数据库  >  物理standby的Failover

物理standby的Failover

WBOY
WBOY原创
2016-06-07 15:54:111160浏览

参考与:《三思笔记》此书 物理standby的 failover 注意几点: 1 failover 之后, 原primary 数据库默认不再是data guard 配置的一部分。 2 多数情况下,其它逻辑/物理standby 数据库不直接参与failover的过程,因此这些数据库不需要做任何操作。 3 某些情况

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

物理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服务器。

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn