dataguard环境apply redo log并failover:

dataguard环境apply redo log并failover:
2008-05-21 14:34

介绍:

环境:redhat linux,Oracle 10.2.0.2,Max performance

模拟的场景是primary库损坏,redo log还存在(通常redo会做冗余,如果没有了redo log就更省事了,但是会丢数据)

1.创建测试数据
2.shutdown primary
3.copy primary上可用的redo到standby
4.recover standby
5.failover

1.创建测试数据
primary:

SQL> create table scott.failover as select * from scott.emp;

Table created.

2.shutdown primary
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

3.copy primary上可用的redo到standby
[oracle@node1 dgtest]$ scp ./redo0* 10.0.0.2:/u01/oradata/dgtest/
oracle@10.0.0.2's password:
redo01.log         100%   25MB   8.3MB/s   00:03   
redo02.log         100%   25MB   5.0MB/s   00:05   
redo03.log         100%   25MB   6.3MB/s   00:04

4.recover standby
Standby上:

4.1 stop redo apply
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

4.2 recover standby

-----
注:register redo log 是不可行的:
SQL> ALTER DATABASE REGISTER LOGFILE '/u01/oradata/dgtest/redo01.log';
ALTER DATABASE REGISTER LOGFILE '/u01/oradata/dgtest/redo01.log'
*
ERROR at line 1:
ORA-16088: archive log has not been completely archived

-----

下面的顺序可以从primary的v$logfile里查到,sequence(primary dwon了肯定查不到,但是可以试,下面只列出了正确的顺序)

SQL> recover standby database until cancel;
ORA-00279: change 562426 generated at 05/20/2008 17:28:10 needed for thread 1
ORA-00289: suggestion : /u01/oradata/dgarch/1_22_654889856.dbf
ORA-00280: change 562426 for thread 1 is in sequence #22


Specify log: {=suggested | filename | AUTO | CANCEL}
/u01/oradata/dgtest/redo03.log
ORA-00279: change 563485 generated at 05/20/2008 18:24:18 needed for thread 1
ORA-00289: suggestion : /u01/oradata/dgarch/1_23_654889856.dbf
ORA-00280: change 563485 for thread 1 is in sequence #23
ORA-00278: log file '/u01/oradata/dgtest/redo03.log' no longer needed for this
recovery


Specify log: {=suggested | filename | AUTO | CANCEL}
/u01/oradata/dgtest/redo01.log
ORA-00279: change 583521 generated at 05/21/2008 10:42:37 needed for thread 1
ORA-00289: suggestion : /u01/oradata/dgarch/1_24_654889856.dbf
ORA-00280: change 583521 for thread 1 is in sequence #24
ORA-00278: log file '/u01/oradata/dgtest/redo01.log' no longer needed for this
recovery


Specify log: {=suggested | filename | AUTO | CANCEL}
/u01/oradata/dgtest/redo02.log
Log applied.
Media recovery complete.

recovery 完成之后就要failover了。

5.failover
5.1 按照官方文档有问题:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE
*
ERROR at line 1:
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-00354: corrupt redo log block header
ORA-00353: log corruption near block 2 change 583889 time 05/21/2008 10:45:34
ORA-00312: online log 4 thread 1: '/u01/oradata/dgarch/1_0_654889856.dbf'

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY
*
ERROR at line 1:
ORA-16139: media recovery required

有问题!明明已经recovery了,可以检查数据:

SQL> alter database open read only;

Database altered.

SQL> select count(*) from scott.failover;

COUNT(*)
----------
        14

5.2 强制failover
重新shutdown 并startup mount;之后
SQL> alter database activate standby database;

Database altered.

SQL> alter database open;

Database altered.

SQL> select open_mode from v$database;

OPEN_MODE
----------
READ WRITE

下面是standby上failover时的alert log:

Database Characterset is UTF8
Threshold validation cannot be done before catproc is loaded.
replication_dependency_tracking turned off (no async multimaster replication found)
Starting background process QMNC
QMNC started with pid=22, OS id=4516
Wed May 21 11:43:42 2008
LOGSTDBY: Validating controlfile with logical metadata
Wed May 21 11:43:42 2008
LOGSTDBY: Validation complete
Completed: alter database open

6. 关于ALTER DATABASE ACTIVATE STANDBY DATABASE
Oracle recommends you use only the failover steps and commands described in the following sections
to perform. a failover. Do not use the ALTER DATABASE ACTIVATE STANDBY DATABASE to perform. a failover, because this statement may cause data loss.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7301064/viewspace-440398/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7301064/viewspace-440398/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值