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


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

将主库启动到 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 RECOVER MANAGED STANDBY DATABASE FINISH;

下面是备库 alert 日志中的信息

Tue Dec 01 16:45:15 2015
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH
Attempt to do a Terminal Recovery (fire)
Media Recovery Start: Managed Standby Recovery (fire)
 started logmerger process
Tue Dec 01 16:45:15 2015
Managed Standby Recovery not using Real Time Apply
Parallel Media Recovery started with 24 slaves
Media Recovery Waiting for thread 1 sequence 45 (in transit)
krsv_proc_kill: Killing 6 processes (all RFS, wait for I/O)
Begin: Standby Redo Logfile archival
End: Standby Redo Logfile archival
Terminal Recovery timestamp is '12/01/2015 16:45:18'
Terminal Recovery: applying standby redo logs.
Terminal Recovery: thread 1 seq# 45 redo required
Terminal Recovery: 
Recovery of Online Redo Log: Thread 1 Group 4 Seq 45 Reading mem 0
  Mem# 0: /ORADATA/oradata/fire/standby_01.log
Identified End-Of-Redo (failover) for thread 1 sequence 45 at SCN 0xffff.ffffffff
Incomplete Recovery applied until change 1118443 time 12/01/2015 16:45:16
Media Recovery Complete (fire)
Terminal Recovery: successful completion
Tue Dec 01 16:45:18 2015
Forcing ARSCN to IRSCN for TR 0:1118443
Attempt to set limbo arscn 0:1118443 irscn 0:1118443 
Resetting standby activation ID 917662745 (0x36b26c19)
ARCH: Archival stopped, error occurred. Will continue retrying
ORACLE Instance fire - Archival Error
ORA-16014: log 4 sequence# 45 not archived, no available destinations
ORA-00312: online log 4 thread 1: '/ORADATA/oradata/fire/standby_01.log'
Completed: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH

如果上面语句没有任何报错,进行步骤 7 的操作。如果有报错,则说明一些日志没有被应用。试着解决报错后,然后重新执行这个语句。

如果报错无法解决,也可以进行失败切换,没有被应用的这些归档日志里面的数据将会丢失。

在备库上执行下面语句来进行失败切换。

sqlplus / as sysdba

 

ALTER DATABASE ACTIVATE PHYSICAL STANDBY DATABASE;

--之后调到步骤 9来完成失败切换。

 

7、确认备库是否做好切换到主库的准备

sqlplus / as sysdba

 

SELECT SWITCHOVER_STATUS FROM V$DATABASE;

查询结果为 TO PRIMARY 或 SESSIONS ACTIVE说明备库做好了准备。

如果查询结果不是这两个值,确认备库的日志应用是否还处于激活状态。

 

8、将备库切换成主库角色

在备库上执行下面语句

sqlplus / as sysdba

 

ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;

 

9、打开新的主库

ALTER DATABASE OPEN;

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

转载于:http://blog.itpub.net/26506993/viewspace-1850722/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值