rac与单机的dataguard上switch over,出现问题
(一)起始:
主库为rac
     hostname:node3 node4
备库为单机:
   hostname:standby2(二)第一次switch over之后:
主库为单机
备库为rac。
曾经把两个rac节点置为一个read only,一个mount状态。
select d.name,d.DB_UNIQUE_NAME,i.INSTANCE_NAME,i.host_name,d.DB_UNIQUE_NAME ,d.open_mode,d.DATABASE_ROLE from gv$database d,gv$instance i where d.inst_id=i.inst_id;
NAME      DB_UNIQUE_NAME                 INSTANCE_NAME  HOST_NAME DB_UNIQUE_NAME                 OPEN_MODE  DATABASE_ROLE
------------------------------ ---------- ----------------
RAC       bjrac1                         rac1  node3  bjrac1                         READ ONLY  PHYSICAL STANDBYRAC       bjrac1                         rac2  node4  bjrac1                         MOUNTED    PHYSICAL STANDBY
在主库上添加一条数据,备库能够同步。
备库执行后台recover managed standby db语句,从昨天晚上开始,select max(sequence#) from v$archived_log是11924,而select max(sequence#) from v$archived_log where applied='YES'一直是11922。大概20小时的时间都是这样。
(三)想做上次switch over的逆操作,把rac还原为主库,单机还原为备库。
现在standby2执行:
[oracle@standby2 archivelog]$ sqlplus / as sysdba
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;
ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN
*
ERROR at line 1:
ORA-16416: Switchover target is not synchronized with the primary
node3执行:
[oracle@node3 bdump]$ sqlplus / as sysdba 
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY
*
ERROR at line 1:
ORA-16139: media recovery required 
SQL> ALTER DATABASE RECOVER AUTOMATIC STANDBY DATABASE;
ALTER DATABASE RECOVER AUTOMATIC STANDBY DATABASE
*
ERROR at line 1:
ORA-00279: change 218829141 generated at 11/19/2008 01:00:31 needed for thread
1
ORA-00289: suggestion : /soft/archivelog/ARC118221668101065.arc
ORA-00280: change 218829141 for thread 1 is in sequence #11822
ORA-00278: log file '/soft/archivelog/ARC118221668101065.arc' no longer needed
for this recovery
ORA-00308: cannot open archived log '/soft/archivelog/ARC118221668101065.arc'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
recover需要寻找#11822的归档(四)奇怪的现象:
[oracle@standby2 archivelog]$ sqlplus / as sysdba
SQL> select sequence#,applied from v$archived_log where thread#=1;
......
         1      11820 YES
         1      11820 NO
         1      11820 NO
         1      11821 NO
         1      11821 NO
         1      11821 NO  <<< 临时主库还没有出现11822这个sequence
SQL> alter system switch logfile;
SQL> select sequence#,applied from v$archived_log where thread#=1;
......
         1      11821 NO
         1      11822 NO  <<出现了这个sequencenode3再次recover:
SQL> recover standby database;
ORA-00279: change 218863194 generated at 11/19/2008 13:57:06 needed for thread
1
ORA-00289: suggestion : /soft/archivelog/ARC118231668101065.arc
ORA-00280: change 218863194 for thread 1 is in sequence #11823
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00308: cannot open archived log '/soft/archivelog/ARC118231668101065.arc'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3ORA-00308: cannot open archived log '/soft/archivelog/ARC118231668101065.arc'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
现在又需要11823了 :([oracle@standby2 archivelog]$ sqlplus / as sysdba
SQL> alter system switch logfile;node3第三次recover:
SQL> recover standby database;
ORA-00279: change 218865559 generated at 11/19/2008 14:48:35 needed for thread
1
ORA-00289: suggestion : /soft/archivelog/ARC118241668101065.arc
ORA-00280: change 218865559 for thread 1 is in sequence #11824
ORA-00278: log file '/soft/archivelog/ARC118231668101065.arc' no longer needed
for this recovery 
ORA-16145: archival for thread# 1 sequence# 11824 in progress
又需要#11824 :(
什么时候是个头儿啊?难道它一定要到thread#=2的最大值???[oracle@standby2 archivelog]$ sqlplus / as sysdba
SQL> select sequence#,applied from v$archived_log where thread#=2;
      ......  
      1      11924  YES
(五)强制把主库switch over
[oracle@node3 ~]$ sqlplus / as sysdbaSQL> alter database recover managed standby database finish force; 
Database altered. 
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY; 
Database altered.
SQL> alter database open; 
Database altered.
[oracle@node4 ~]$ sqlplus / as sysdba 
SQL> startup;把现在的主库切换到备库:
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;
ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN
*
ERROR at line 1:
ORA-16416: Switchover target is not synchronized with the primary 还是这个错误
试图解决:ORA-16416主库node3:
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
SQL>
alter database create standby controlfile as '/home/oracle/standby.ctl';SQL> alter database open;
SQL> exit
[oracle@node4 ~]$ scp standby.ctl standby2:/u02/standby/
备库:
[oracle@standby2 standby]$ cp control01.ctl control01.ctl.bak
[oracle@standby2 standby]$ cp control02.ctl control02.ctl.bak
c[oracle@standby2 standby]$ cp control03.ctl control03.ctl.bak
[oracle@standby2 standby]$ cp standby.ctl control01.ctl
<<<这里出了问题,应该先停备库
[oracle@standby2 standby]$ cp standby.ctl control02.ctl
[oracle@standby2 standby]$ cp standby.ctl control03.ctl
[oracle@standby2 standby]$ sqlplus / as sysdbaSQL> shutdown abort;
ORACLE instance shut down.
SQL> startup mount;SQL> alter database recover managed standby database disconnect from session;
Database altered.
Alertlog:
alter database recover managed standby database disconnect from session
Wed Nov 19 15:43:26 2008
Attempt to start background Managed Standby Recovery process (standby)
MRP0 started with pid=19, OS id=14590
Wed Nov 19 15:43:26 2008
MRP0: Background Managed Standby Recovery process started (standby)
Managed Standby Recovery not using Real Time Apply
Datafile 1 (ckpscn 218889735) is orphaned on incarnation#=2
MRP0: Background Media Recovery terminated with error 19909
Wed Nov 19 15:43:31 2008
Errors in file /u01/app/oracle/admin/standby/bdump/standby_mrp0_14590.trc:
ORA-19909: datafile 1 belongs to an orphan incarnation
ORA-01110: data file 1: '/u02/standby/oradata/system.268.668101019'
Wed Nov 19 15:43:31 2008
Errors in file /u01/app/oracle/admin/standby/bdump/standby_mrp0_14590.trc:
ORA-19909: datafile 1 belongs to an orphan incarnation
ORA-01110: data file 1: '/u02/standby/oradata/system.268.668101019'
Wed Nov 19 15:43:31 2008
MRP0: Background Media Recovery process shutdown (standby)SQL> select database_role,open_mode,protection_mode,protection_level,switchover_status from v$database;
DATABASE_ROLE
OPEN_MODE
PROTECTION_MODE
PROTECTION_LEVEL
---------------- ---------- -------------------- --------------------
SWITCHOVER_STATUS
--------------------
PHYSICAL STANDBY MOUNTED
MAXIMUM PERFORMANCE
MAXIMUM PERFORMANCE
RECOVERY NEEDED
SQL> recover standby database;
ORA-00283: recovery session canceled due to errors
ORA-19909: datafile 1 belongs to an orphan incarnation
ORA-01110: data file 1: '/u02/standby/oradata/system.268.668101019'(六)罗嗦了半天,我的问题:
1、在第(二)部分中,把两个rac节点置为一个read only,一个mount状态,是不是不应该这样做??
2、在第(四)部分中,node3 recover为什么一而再,再而三的让standby2节点数据库进行switch logfile??
3、在第(五)部分中,我强制switch over了,现在主备库已经成了这种状态,在不做备库的情况,是否还有挽回的余地??
4、在第(五)部分中,如果我不出现在备库没停的情况下,copy control file,是否就不会出现这种情况???请高手指教!!!不胜感激!!!