物理Data Guard 下Failover 时Redo 的处理

描述

 

在物理data guard环境中最大性能模式下,日志应用为ARCH。 Standby是通过Primary上传过去的归档日志并写到standby redo log中,然后再通过Standbyredo log 来进行数据的同步。因此有这样一种情况,如:在primary上归档后,又进行了一个事务并提交了,这部份数据将在redolog中,但是还没有进行归档,如果这时primarycrash后将丢失redolog中的数据。基于这种情况,我们可以在Failover之前将主库的redocopy过来,在apply一下。 下面的实验就是来验证这个问题:


实验环境:

rhel5u7+ORACLE_11.2.0.1.0+物理ADG

日志传输:LGWR SYNC AFFIRM 

模式:最大性能


1)主库:

(在主库上生成归档,并模拟crash redo log中的数据并没有同步到standby中。)

生成归档

SQL>altersystem switch logfile;

检查当前最大的序号

SQL> select max(sequence#) fromv$archived_log;

MAX(SEQUENCE#)

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

111

创建1张测试表

SQL>create table fengg (id number,name varchar(20));

Tablecreated.

插入测试数据

SQL>insert into fengg values(1,'fengg');

1row created.

SQL>commit;

模拟数据库crash

SQL>shutabort


将主库的redo 文件copy到备库的对应目录:

[oracle@dbal]$ scp redo0{1..3}.log  192.168.2.112:/archivelog/

注意:别覆盖了standbyredolog,只要随便找个目录就行,在恢复时指定该路径。

 

2)备库(恢复之后ADG需要重建)

SQL>select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)

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

111


取消应用redolog

SYS@ora11g> alterdatabase recover managed standby database cancel;

SYS@ora11g>recover standby database until cancel;

ORA-01093:ALTER DATABASE CLOSE only permitted with no sessions connected

SYS@ora11g>shut immediate;

SYS@ora11g>startup

 

SYS@ora11g>recover standby database until cancel;

ORA-00279:change 1835913 generated at 02/01/2013 15:06:28 needed for thread 1

ORA-00289:suggestion : /orachivelog/1_112_777078497.dbf

ORA-00280:change 1835913 for thread 1 is in sequence #112

-- 默认情况下会提示需要归档112 实际上这个序列为112的归档还没有生成,我们忽略它,使用我们刚才copy过来的redo 日志来恢复。

 

Specifylog: {<RET>=suggested | filename | AUTO | CANCEL}

/orachivelog/redo03.log    -- 注意, 这个位置是手动写的

 

Logapplied.

Mediarecovery complete.

--这里是运气好,一次就搞定了。 实际上有三个redo,我们也是不确定使用哪个redo的,只能一个一个试了。

 

打开数据到open

SYS@ora11g>select status from v$instance;

STATUS

----------

MOUNTED

 

SYS@ora11g>alter database open read only;

Databasealtered.

 

查看恢复redo log后的数据

SYS@ora11g>select * from fengg;

        ID NAME

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

         1 fengg

 

强制Failover 一下看看:

SYS@ora11g>shutdown immediate  

SYS@ora11g>startup mount;

SYS@ora11g>alter database activate standby database;

SYS@ora11g>alter database open;

 

小结:

1,在recover后ADG将失效,需要重新搭建。

2,在对redo进行recover之前,应当确保所有的归档文件已经应用。 应用之后可以采用强制Failver的方式来激活备库。

3,以上环境是在最大性能模式下进行的日志应用为ARCH的实验,最大保护和最高可用的日志应用为LGWR不需recover。


注:参考来自David Dai  http://blog.youkuaiyun.com/tianlesoftware/article/details/5989638

===========================================================================================

版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任! 谢谢合作!

QQ: 164798858@qq.com
Sina: weibo.com/kaijunfeng
Yahoo: fffygapl@yahoo.com.cn


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值