当主库由于某种原因不可用时,需要考虑将备库直接拉起来,这就是failover。基本原理和操作步骤和switchover差不多只是不管主库,直接将备库切换成新的主库。
一.切换前的检查
确保所有能应用的归档都已经应用。确保监听设置正确。确保切换后应用能连接到新的主库等。
二.停止SQL Apply
如果原来是停止的,那么可能还有部分最新的日志没有应用,则最好先应用一下日志,减少最终切换需要的时间:
alter database stop logical standby apply;
三.激活备库
以下命令会终止RFS,然后应用还未应用的日志,最后将数据库转换成primary角色。
至此,逻辑备库已经转换成主库,非常的简单。由于数据库本身是open的,转换后无须再作任何操作
DATABASE_ROLE
----------------
PRIMARY
四.处理其他备库
如果原来的DataGuard中还有不止一个逻辑备库,则其中一个逻辑备库failover成主库以后,其他的备库需要重新指向新的主库。首先在其他备库创建一个到新主库的database link
create database link newprimary connect to user identified by password using 'newprimary';
alter session enable guard;
然后重新指向新的备库
如果执行时出现ORA-16109: failed to apply log data from previous primary,则备库只有重做了。