以下是在作failover时standby端的alertlog内容,情况时拔掉Primary的网线,模拟Primary数据库网络环境忽然损坏。
--下行表示standby端的standby redo log已经启用
RFS: SUCcessfully opened standby logfile 4: '/global/oradata/ctsdb/stdby_redo04.log'
Tue Aug 31 19:54:30 2004
Media Recovery Log /global/oradata/ctsdb/archive/arch1_8389.log
Media Recovery Waiting for thread 1 seq# 8390 (in transit)
Tue Aug 31 19:54:57 2004
Restarting dead background process QMN0
QMN0 started with pid=12
Tue Aug 31 19:55:19 2004
--开始failover,第一步
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH
Tue Aug 31 19:55:19 2004
Terminal Recovery: request posted
Tue Aug 31 19:55:48 2004
--在SQLPLUS端finish命令没有报错,正常结束,但是下面几行显示standby redo file并没有被正确recover
Warning: log 4 of thread 1 is being archived or modified
MRP0: Background Media Recovery terminated with error 261
Tue Aug 31 19:55:48 2004
Errors in file /eXPort/home/Oracle/app/oracle/admin/ctsdb/bdump/ctsdb_mrp0_2201.trc:
ORA-00261: log 4 of thread 1 is being archived or modified
ORA-00312: online log 4 thread 1: '/global/oradata/ctsdb/stdby_redo04.log'
Recovery interrupted.
MRP0: Background Media Recovery process shutdown
Tue Aug 31 19:55:48 2004
Terminal Recovery: completion detected
Completed: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FI
--failover第二步,执行switchover
Tue Aug 31 19:56:01 2004
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY
Tue Aug 31 19:56:01 2004
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY
Database not recovered through End-Of-REDO
Database not recovered through End-Of-REDO
--switchover报错,无法将standby转为primary
Switchover: Media recovery required - standby not in limbo
ORA-16139 signalled during: ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY...
--尝试使用activate命令,同样报ORA-00261错误
Tue Aug 31 19:57:16 2004
ALTER DATABASE ACTIVATE STANDBY DATABASE
Tue Aug 31 19:57:16 2004
ALTER DATABASE ACTIVATE [PHYSICAL] STANDBY DATABASE
Tue Aug 31 19:57:31 2004
Warning: log 4 of thread 1 is being archived or modified
Activate standby database received error 261
ORA-261 signalled during: ALTER DATABASE ACTIVATE STANDBY DATABASE...
Tue Aug 31 19:58:18 2004
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY
Tue Aug 31 19:58:18 2004
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY
Database not recovered through End-Of-REDO
Database not recovered through End-Of-REDO
Switchover: Media recovery required - standby not in limbo
ORA-16139 signalled during: ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY...
--重新将standby置为治理恢复模式
Tue Aug 31 20:04:18 2004
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION
Attempt to start background Managed Standby Recovery process
MRP0 started with pid=12
MRP0: Background Managed Standby Recovery process started
Tue Aug 31 20:04:22 2004
RFS: Possible network disconnect with primary database
Tue Aug 31 20:04:24 2004
Starting datafile 1 recovery in thread 1 sequence 8390
Datafile 1: '/global/oradata/ctsdb/system01.dbf'
Starting datafile 2 recovery in thread 1 sequence 8390
Datafile 2: '/global/oradata/ctsdb/undotbs01.dbf'
Starting datafile 3 recovery in thread 1 sequence 8390
Datafile 3: '/global/oradata/ctsdb/indx01.dbf'
Starting datafile 4 recovery in thread 1 sequence 8390
Datafile 4: '/global/oradata/ctsdb/tools01.dbf'
Starting datafile 5 recovery in thread 1 sequence 8390
Datafile 5: '/global/oradata/ctsdb/users01.dbf'
Starting datafile 6 recovery in thread 1 sequence 8390
Datafile 6: '/global/oradata/ctsdb/perfstat.dbf'
Starting datafile 7 recovery in thread 1 sequence 8390
Datafile 7: '/global/oradata/ctsdb/stk_his_data1_01.dbf'
Starting datafile 8 recovery in thread 1 sequence 8390
Datafile 8: '/global/oradata/ctsdb/stk_his_data2_01.dbf'
Starting datafile 9 recovery in thread 1 sequence 8390
Datafile 9: '/global/oradata/ctsdb/stk_his_data3_01.dbf'
Starting datafile 10 recovery in thread 1 sequence 8390
Datafile 10: '/global/oradata/ctsdb/stk_his_data4_01.dbf'
Starting datafile 11 recovery in thread 1 sequence 8390
Datafile 11: '/global/oradata/ctsdb/stk_his_ind_ts01.dbf'
Starting datafile 12 recovery in thread 1 sequence 8390
Datafile 12: '/global/oradata/ctsdb/stk_his_ind_ts03.dbf'
Starting datafile 13 recovery in thread 1 sequence 8390
Datafile 13: '/global/oradata/ctsdb/stk_his_ind_data1_01.dbf'
Starting datafile 14 recovery in thread 1 sequence 8390
Datafile 14: '/global/oradata/ctsdb/stk_his_ind_data2_01.dbf'
Starting datafile 15 recovery in thread 1 sequence 8390
Datafile 15: '/global/oradata/ctsdb/stk_his_ind_data3_01.dbf'
Starting datafile 16 recovery in thread 1 sequence 8390
Datafile 16: '/global/oradata/ctsdb/stk_his_ind_data4_01.dbf'
Starting datafile 17 recovery in thread 1 sequence 8390
Datafile 17: '/global/oradata/ctsdb/stk_his_ts01.dbf'
Starting datafile 18 recovery in thread 1 sequence 8390
Datafile 18: '/global/oradata/ctsdb/stk_his_ts02.dbf'
Starting datafile 19 recovery in thread 1 sequence 8390
Datafile 19: '/global/oradata/ctsdb/stk_inx_ts01.dbf'
Starting datafile 20 recovery in thread 1 sequence 8390
Datafile 20: '/global/oradata/ctsdb/stk_inx_ts02.dbf'
Starting datafile 21 recovery in thread 1 sequence 8390
Datafile 21: '/global/oradata/ctsdb/stk_ts01.dbf'
Starting datafile 22 recovery in thread 1 sequence 8390
Datafile 22: '/global/oradata/ctsdb/stk_ts02.dbf'
Starting datafile 23 recovery in thread 1 sequence 8390
Datafile 23: '/global/oradata/ctsdb/logmnrts01.dbf'
Starting datafile 24 recovery in thread 1 sequence 8390
Datafile 24: '/global/oradata/ctsdb/ts_test01.dbf'
Starting datafile 25 recovery in thread 1 sequence 8390
Datafile 25: '/global/oradata/ctsdb/ts_test02.dbf'
Starting datafile 26 recovery in thread 1 sequence 8390
Datafile 26: '/global/oradata/ctsdb/stk_his_ind_ts02.dbf'
Starting datafile 27 recovery in thread 1 sequence 8390
Datafile 27: '/global/oradata/ctsdb/stk_ts03.dbf'
Media Recovery Waiting for thread 1 seq# 8390
Tue Aug 31 20:04:24 2004
Completed: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DI
--用skip standby logfile选项作failover
Tue Aug 31 20:04:40 2004
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH SKIP STANDBY LOGFILE
Tue Aug 31 20:04:40 2004
Database not recovered through End-Of-REDO
Terminal Incomplete Recovery: request posted
Tue Aug 31 20:04:54 2004
Terminal Incomplete Recovery: UNTIL CHANGE 3592753
Terminal Incomplete Recovery: End-Of-Redo log allocation
Terminal Incomplete Recovery: log 4 reserved for thread 1 seq# 8390
TERMINAL RECOVERY changing datafile format version from 8.0.0.0.0 to 9.0.0.0.0
Switching logfile format version from 8.0.0.0.0 to 9.0.0.0.0
Terminal Incomplete Recovery: clearing standby redo logs.
Terminal Incomplete Recovery: thread 1 seq# 8390 redo required
Terminal Incomplete Recovery: End-Of-Redo log /global/oradata/ctsdb/stdby_redo04.log
Identified end-of-REDO for thread 1 sequence 8390
Terminal Incomplete Recovery: end checkpoint SCN 3592754
MRP0: Media Recovery Complete
Switching logfile format version from 9.0.0.0.0 to 8.0.0.0.0
Terminal Incomplete Recovery: successful completion
Begin: Wait for standby logfiles to be archived
Tue Aug 31 20:04:55 2004
ARC0: Evaluating archive log 4 thread 1 sequence 8390
ARC0: Beginning to archive log 4 thread 1 sequence 8390
Tue Aug 31 20:04:55 2004
ARC1: Evaluating archive log 4 thread 1 sequence 8390
Tue Aug 31 20:04:55 2004
Creating archive destination LOG_ARCHIVE_DEST_1: '/global/oradata/ctsdb/archive/arch1_8390.log'
Tue Aug 31 20:04:55 2004
ARC1: Unable to archive log 4 thread 1 sequence 8390
Log actively being archived by another process
Tue Aug 31 20:04:55 2004
ARC0: Completed archiving log 4 thread 1 sequence 8390
Tue Aug 31 20:05:10 2004
End: All standby logfiles have been archived
Resetting standby activation ID 4038461969 (0xf0b60a11)
MRP0: Background Media Recovery process shutdown
Tue Aug 31 20:05:10 2004
Terminal Incomplete Recovery: completion detected
Completed: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FI
--failover成功,但是可以看到数据库作了resetlogs,这并不是我们希望的,而且由于skip了当前的standby redo log,所以肯定有相当的数据损失。
Tue Aug 31 20:05:12 2004
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY
RESETLOGS after incomplete recovery UNTIL CHANGE 3592754
Resetting resetlogs activation ID 0 (0x0)
Online log 3 of thread 1 was previously cleared
Online log 5 of thread 0 was previously cleared
Online log 6 of thread 0 was previously cleared
Online log 7 of thread 0 was previously cleared
RESETLOGS changing datafile format version from 9.0.0.0.0 to 8.0.0.0.0
Switchover: Complete - Database shutdown required
Completed: ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY
查metalink,只说这种情况是可能因为standby redo log没有被启用而引起的,但是我这里的情况明显是已经被启用了。