相对于switchover来说,failover的步骤相对比较繁琐,而且切换过程中可能会出现一些比较妖怪的问题,其实中间的切换先后顺序比较重要。本来想把整理的东西贴出来的,可惜开了一下午的会,还要写报告,双休日都不消停,还要去春游。看来只有等到星期一了。
failover步骤:
还是设primary为abc,physical standby为xyz。说明一下,这里使用Oracle10g中的新功能flashback来将abc恢复成与xyz同步。
on abc:
select flashback_on from v$database;YES的话就对了,如果是NO的话就需要shutdown immediate后再startup mount,然后用alter database flashback on将该功能打开,再alter database open;
on xyz:
SQL>recover managed standby database finish force;
SQL>alter database commit to switchover to primary;
SQL>shutdown immediate;
SQL>startup mount;
SQL>alter database flashback on;
SQL>alter database open; #到了这里,failover已经成功,数据库可以对外服务了。
SQL>select to_char(standby_became_primary_scn) from v$database;
假设得到的scn号为3990903
on abc:
SQL>shutdown immediate;
SQL>startup mount;
SQL>flashback database to scn 3990903;
SQL>alter database create standby controlfile as '/tmp/haha.ctl'
SQL>shutdown immediate;
在操作系统中进入oradata目录
P595/oracle/oradata>mv /tmp/haha.ctl ./
P595/oracle/oradata>rm *.ctl
P595/oracle/oradata>cp haha.ctl control01.ctl
P595/oracle/oradata>cp haha.ctl control02.ctl
P595/oracle/oradata>cp haha.ctl control03.ctl
P595/oracle/oradata>sqlplus "/as sysdba"
SQL>startup mount;
SQL>recover managed standby database disconnect;
这个时候主备库在试图建立RFS连接,一般来说30秒到1分钟,查看主机上的select * from v$archive_dest where dest_id=2;如果没有什么报错信息,就说明已经建立连接,但通常这个备机上面的日志还没有全部applied,可以通过select sequence#,applied from v$archived_log order by sequence#来查看。通常都是最后1个日志被applied,其它的还是为NO。再次调用recover managed standby database disconnect命令即可让所有日志同步。
[@more@]来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/473120/viewspace-910553/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/473120/viewspace-910553/