描述
在物理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/
注意:别覆盖了standby的redolog,只要随便找个目录就行,在恢复时指定该路径。
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
108

被折叠的 条评论
为什么被折叠?



