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/