ITPub博客

首页 > 数据库 > Oracle > Oracle 12c Data guard 物理备库应急切换(failover)流程

Oracle 12c Data guard 物理备库应急切换(failover)流程

原创 Oracle 作者:feelpurple 时间:2015-12-04 13:27:55 0 删除 编辑

1、如果主库可以 mount ,可以将主库上未传输到备库的归档日志传输到备库。

确保备库上的 Redo Apply 是激活的状态。将主库启动到 mount 状态,执行下列操作,如果主库不能执行 mount ,则跳至步骤 2 。

sqlplus / as sysdba

shutdown immediate

startup mount;

--target_db_name是备库的db_unique_name

 

ALTER SYSTEM FLUSH REDO TO target_db_name;

如果上面操作成功,跳至步骤 5 ;如果操作报错,跳至步骤 2 。

 

2、确保备库有主库传送过来的最近归档日志。

在备库上通过下面的语句查询序列最高的归档日志。

sqlplus / as sysdba

 

SELECT UNIQUE THREAD# AS THREAD, MAX(SEQUENCE#) OVER (PARTITION BY thread#) AS LAST from V$ARCHIVED_LOG;

如果备库没有接收到主库生成的最新归档日志,从主库将归档日志拷贝到备库进行注册。

sqlplus / as sysdba

 

ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1';

 

3、确定并解决任何归档日志缺口。

在备库上通过下面语句查询备份是否存在归档日志缺口。

sqlplus / as sysdba

 

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

如果查询不到任何结果,则说明没有归档日志缺口。

如果有归档日志缺口,则从主库拷贝缺少的归档日志到备库进行注册。

sqlplus / as sysdba

 

ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1';

 

4、重复步骤 3 直到所有的归档日志缺口被消除。

步骤 3 的查询语句显示的是序号最高的归档日志缺口,你必须重复这个查询,直到没有返回任何行。

 

5、在备库上停止日志应用。

sqlplus / as sysdba

 

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

 

6、将备库切换成主库角色。

sqlplus / as sysdba

 

ALTER DATABASE FAILOVER TO target_db_name;

如果上面语句没有任何报错,进行步骤 10 的操作。如果有报错,调到步骤7。

 

7、如果步骤 6 有报错,尝试消除错误,然后重新执行步骤 6 的语句

如果语句没有报错,则跳至步骤 10

如果报错依然存在,且报错是关于 far sync instance 的问题,则跳至步骤 8

如果报错依然存在,且报错不是关于 far sync instance 的问题,则跳至步骤 9

 

8、对于 far sync instance 的错误,在语句上使用 FORCE 选项

在备库上执行下面语句

ALTER DATABASE FAILVOVER TO CHICAGO FORCE;

如果 FORCE 选项成功了,跳至步骤 10

如果 FORCE 选项没有成功,跳至步骤9

 

9、执行 data-loss failover

ALTER DATABASE ACTIVATE PHYSICAL STANDBY DATABASE;

 

10、打开新的主库

ALTER DATABASE OPEN;

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

请登录后发表评论 登录
全部评论

注册时间:2014-08-01

  • 博文量
    404
  • 访问量
    1673941