Oracle10gR2 Logical Standby(六)逻辑备库的Failover

Oracle10gR2 Logical Standby(六)逻辑备库的Failover

当主库由于某种原因不可用时,需要考虑将备库直接拉起来,这就是failover。基本原理和操作步骤和switchover差不多只是不管主库,直接将备库切换成新的主库。

一.切换前的检查

确保所有能应用的归档都已经应用。确保监听设置正确。确保切换后应用能连接到新的主库等。

二.停止SQL Apply

如果原来是停止的,那么可能还有部分最新的日志没有应用,则最好先应用一下日志,减少最终切换需要的时间:

alter database start logical standby apply finish;

alter database stop logical standby apply;

三.激活备库

以下命令会终止RFS,然后应用还未应用的日志,最后将数据库转换成primary角色。

alter database activate logical standby database finish apply;

至此,逻辑备库已经转换成主库,非常的简单。由于数据库本身是open的,转换后无须再作任何操作

select database_role from v$database;

DATABASE_ROLE
----------------
PRIMARY

四.处理其他备库

如果原来的DataGuard中还有不止一个逻辑备库,则其中一个逻辑备库failover成主库以后,其他的备库需要重新指向新的主库。首先在其他备库创建一个到新主库的database link

alter session disable guard;
create database link newprimary connect to user identified by password using 'newprimary';       
alter session enable guard;

然后重新指向新的备库

alter database start logical standby apply new primary newprimary;

如果执行时出现ORA-16109: failed to apply log data from previous primary,则备库只有重做了。