[Oracle工程师手记] 因为意外发生 failover 之后,如何尽量地重用原来的主库

     有的时候,我们在Data Guard 环境中,因为某种意外(例如 主库的电源设备损坏)导致主库一时之间无法工作,只好把备库 failover ,改变角色,变成主库。事后,老的主库的硬件问题得到修正,它的数据也没有丢失,我们可能不想再折腾一番,用老主库的硬件重新作一套备库。而是希望,直接把它变成备库。

 如何作呢? 如果有幸设置了数据库的 flashback 有效,那么可以借助于 flashback 功能,来快速将主库转变为备库。下面是具体的步骤:

 首先,需要找到旧的备库,变成新的主库时的 SCN:

select standby_became_primary_scn from v$database;

 比如,得到的 SCN 是: 1622177。

然后,重启动老主库到 mount 状态,再 flashback 到这个 SCN值:

shu immediate
startup mount

flashback database to scn <SCN>; <<<<< 用查询得到的 SCN。

 接下来,把老主库,变成新的备库:

alter database convert to physical standby;

 如果新主库和新备库之间可以连通,新主库的 log_archive_dest_n (例如 :2) 已经指向 新备库。新主库和新备库的 fal_server 都已经配置指向了对方,那么就可以开始从 新的主库向新备库传递 REDO,进行同步了。

recover managed standby database disconnect;

 而且,一般情况下,往往老的主库的硬件配置会比老的备库的硬件配置高很多,所以,上述的新主库和新备库可以正常同步后,我们也可以在他们之间进行 switchover ,使得老的主库再次变回主库。

posted @ 2021-04-09 16:56  健哥的数据花园  阅读(134)  评论(0编辑  收藏  举报