DG 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
该主数据库可以转换为备用数据库
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值