Oracle DG故障诊断一则:alter database recover to logical standby new_logical_dbname卡住

我们在基于物理standby的基础上搭建逻辑备库过程过程中,在执行:

alter database recover to logical standby READDB;

卡住不动,并且alert也没有报错信息,无比郁闷,咨询了别人,聊天记录如下:

Oracle DG故障诊断一则:alter database recover to logical standby new_logical_dbname卡住
Oracle DG故障诊断一则:alter database recover to logical standby new_logical_dbname卡住
Oracle DG故障诊断一则:alter database recover to logical standby new_logical_dbname卡住
Oracle DG故障诊断一则:alter database recover to logical standby new_logical_dbname卡住
Oracle DG故障诊断一则:alter database recover to logical standby new_logical_dbname卡住
Oracle DG故障诊断一则:alter database recover to logical standby new_logical_dbname卡住

我们的业务是passport应用,无法停止或者停掉非常麻烦,总之,药不能停。

经过摸索,我们得到一个经验:需要等到MRP应用日志到跟主库一致,此时执行该命令才不会hang住。


具体流程大概是这样的:

1. 开启实时日志应用

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION
    在这个过程中,我们可以边查看日志应用情况,在备库执行如下命令:

SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

    直到主备日志一致,判断SQL如下:

     在主库执行:

archive log list

     在备库执行:

select max(sequence#) from v$archived_log;

     根据这2个值即可判断日志是否一致


2. 接着,我们需要在备库停掉MRP进程:

alter database recover managed standby database cancel;

    注意,此时如果报错,如下所示,可以不必在意,因为我们主备日志已经一致,MRP可以为idle

ERROR at line 1:
ORA-16136: Managed Standby Recovery not active

3. 然后,我们可以在主库生成数据字典

exec dbms_logstdby.build;

  我们需要让数据字典传输到备库,因此我们还需要却下日志:

alter system archive log current;

4. 最后,大功告成 :-)

alter database recover to logical standby READDB;


Good Luck!


Oracle DG故障诊断一则:alter database recover to logical standby new_logical_dbname卡住,布布扣,bubuko.com

Oracle DG故障诊断一则:alter database recover to logical standby new_logical_dbname卡住

上一篇:mysql索引


下一篇:MySQL启动和关闭服务命令