zoukankan      html  css  js  c++  java
  • data guard switchover切换异常

    data guard switchover切换异常

    查看DG数据库备份库发现,switchover_status为SWITCHOVER LATENT

    SQL> select OPEN_MODE,PROTECTION_MODE,PROTECTION_LEVEL,SWITCHOVER_STATUS from v$database;

    OPEN_MODE      PROTECTION_MODE            PROTECTION_LEVEL         SWITCHOVER_STATUS
    ----------           --------------------              --------------------             --------------------
    MOUNTED         MAXIMUM PERFORMANCE   MAXIMUM PERFORMANCE   SWITCHOVER LATENT

    发现是switchover latent而不是to primary

    这个问题是说切换处于pending模式,没有完成无法回到主库。当你查看ALERT日志时,也没有发现什么报错,是不是要继续等下去呢?其实不需要等待,出现这个问题的原因就是日志没有归档,所以备库与主库不一致,需要恢复。当备库恢复到和主库一致后,状态就会成为to_primary

    验证一下这个问题是不是上面所说的原因,你可以继续在备库上执行下面这句

    sys@standby>  ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;

    ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN

    *

    ERROR at line 1:

    ORA-16139: media recovery required

    这里提示需要介质恢复。

    根据以上的分析和定位,我们要解决这个问题,需要在备库上切断应用,启用日志同步

    SYS@standby> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

    Database altered.

    SYS@standby> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

    SWITCHOVER_STATUS

    --------------------

    TO PRIMARY

    显示为TO PRIMARY,这时看状态就正常了。

    SYS@standby> alter database commit to switchover to primary with session shutdown;

    Database altered.

    SYS@standby> select database_role,switchover_status,open_mode from v$database;

    DATABASE_ROLE SWITCHOVER_STATUS    OPEN_MODE

    ---------------- -------------------- --------------------

    PRIMARY NOT ALLOWED      MOUNTED 

    打开数据库

    sys@standby>alter database open;

    切换一下日志

    sys@standby> alter system switch logfile ;

    System altered.

    再检查一下日志的状态

    SYS@standby> select sequence#,standby_dest,archived,applied,status from v$archived_log;

    SEQUENCE# STA ARC APPLIED   S

    ---------- --- --- --------- -

         4             NO  YES YES     A

         5             NO YES YES     A

          6             NO  YES YES     A

           7            NO  YES YES     A

    发现都是YES,说明已经同步了。

    二、FAILED DESTINATION状态

    当备库切换为主库后,发现切换状态为FAILED DESTINATION

    SYS@primary> select database_role,switchover_status,open_mode from v$database;

    DATABASE_ROLE SWITCHOVER_STATUS    OPEN_MODE

    ---------------- -------------------- --------------------

    PRIMARY FAILED DESTINATION   READ WRITE

    发现是FAILED DESTINATION而不是to standby

    这个问题说明主库连接备库有问题,可以具体查看一下ALERT日志,看看是怎么回事

    Error 12541 received logging on to the standby

    Check whether the listener is up and running.

    Errors in file /u01/app/oracle/diag/rdbms/primary/primary/trace/primary_arc2_2546.trc:

    ORA-12541: TNS:no listener

    PING[ARC2]: Heartbeat failed to connect to standby 'standby'. Error is 12541.

    这里说明备库的监听有问题,重启备库监听,再查状态就变成to standby了

    SYS@primary> select database_role,switchover_status,open_mode from v$database;

    DATABASE_ROLE SWITCHOVER_STATUS    OPEN_MODE

    ---------------- -------------------- --------------------

    PRIMARY TO STANDBY      READ WRITE

    当然导致FAILED DESTINATION的原因会有很多,比如log_archive_dest_2 参数的属性值还有口令文件的配置出错或者权限问题等。

    Switchover_Status值的含义

    NOT ALLOWED
    当前的数据库不是带有备用数据库的主数据库
    PREPARING DICTIONARY
    该逻辑备用数据库正在向一个主数据库和其他备用数据库发送它的重做数据,以便为切换做准备
    PREPARING SWITCHOVER
    接受用于切换的重做数据时,逻辑备用配置会使用它
    RECOVERY NEEDED
    备用数据库还没有接收到切换请求
    SESSIONS ACTIVE
    在主数据库中存在活动的SQL会话;在继续执行之前必须断开这些会话
    SWITCHOVER PENDING
    适用于那些已收到主数据库切换请求但是还没有处理该请求的备用数据库
    SWITCHOVER LATENT
    切换没有完成并返回到主数据库
    TO LOGICAL STANDBY
    主数据库已经收到了来自逻辑备用数据库的完整的字典
    TO PRIMARY
    该备用数据库可以转换为主数据库
    TO STANDBY
    该主数据库可以转换为备用数据库

  • 相关阅读:
    鲸云效总结自动化测试常见问题
    鲸云效解析自动化测试前期的准备很重要
    鲸云效为小程序上线做兼容性审核
    ADO.NET删除和修改
    GIT常用操作命令
    随笔
    你应该知道的计算机延迟数字
    centos安装dotnet-sdk-3.1出现no package问题
    Linux CentOS7.9安装Docker
    CentOS6.8配置IP
  • 原文地址:https://www.cnblogs.com/unixshell/p/3594264.html
Copyright © 2011-2022 走看看