如果主库出现故障无法修复的话,就需要在备库上做failover,使得应用可以继续运行。
在备库做失败切换的一般步骤是:
1、如果可能,从主库手工拷贝并注册ARCHIVED LOG到备库上,直到备库的V$ARCHIVE_GAP记录为空。
2、重启备库
3、在备库应用所有日志(用finish关键字)
4、把备库设置为最大性能模式
5、失败切换
6、修改备库的相关参数(主要是其作为STANDBY_ROLE的相关参数)
在时间充裕的情况下可以这样做,如果时间紧迫,可以直接用下面的脚本实现FAILOVER。
[oracle@standby ~]$ more failover.sh
export ORACLE_BASE=/u01/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORACLE_SID=primary
export PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export NLS_LANG="american_america.ZHS16GBK"
lsnrctl stop
$ORACLE_HOME/bin/sqlplus /nolog <connect / as sysdba
alter database recover managed standby database cancel;
shutdown immediate
startup mount
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;
alter database recover managed standby database finish;
-- switch
alter database commit to switchover to primary with session shutdown;
-- open
shutdown immediate
startup
exit
EOF
lsnrctl start
脚本先重启一次数据库是为了防止ORA-01093: ALTER DATABASE CLOSE only permitted with no sessions connected错误。
最后不要忘了修改数据库参数。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/231499/viewspace-63846/,如需转载,请注明出处,否则将追究法律责任。