DG切换角色时发生ORA-16416: 切换目标与主目标不同步解决方法

本文介绍了一次Oracle数据库从主库切换到物理备库过程中遇到的同步问题及解决步骤。通过重新创建并替换备库控制文件,最终实现了成功的角色转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主库上操作:

SQL> select database_role,open_mode,protection_mode,protection_level,switchover_status from v$database;

DATABASE_ROLE    OPEN_MODE PROTECTION_MODE      PROTECTION_LEVEL     SWITCHOVER_STATUS
---------------- ---------- -------------------- -------------------- --------------------
PRIMARY          READ WRITE MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE SESSIONS ACTIVE

--尝试切换:

SQL> alter database commit to switchover to physical standby with session shutdown;
alter database commit to switchover to physical standby with session shutdown
*
第 1 行出现错误:
ORA-16416: 切换目标与主目标不同步


SQL> !oerr ora 16416
16416, 00000, "Switchover target is not synchronized with the primary"
// *Cause: The switchover target incurred an error or has a gap at the time
//          the switchover operation was attempted.
// *Action: Allow the switchover target to become synchronized and then
//          re-attempt the switchover.

 

解决方法:
1、startup mount主库,创建备库控制文件,拷贝到备库机器;

SQL> alter database create standby controlfile as '/backup/sdtby_control01.ctl';

数据库已更改。

SQL> alter database open;

数据库已更改。
2、shutdown备库,替换控制文件,startup mount;

SQL> select switchover_status,database_role from v$database;

SWITCHOVER_STATUS    DATABASE_ROLE
-------------------- ----------------
RECOVERY NEEDED      PHYSICAL STANDBY

SQL> alter database recover managed standby database disconnect from session;

数据库已更改。

SQL> select database_role,open_mode,protection_mode,protection_level,switchover_status from v$database;

DATABASE_ROLE    OPEN_MODE PROTECTION_MODE      PROTECTION_LEVEL     SWITCHOVER_STATUS
---------------- ---------- -------------------- -------------------- --------------------
PHYSICAL STANDBY MOUNTED    MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE TO PRIMARY

SQL> select max(SEQUENCE#) from v$archived_log;

MAX(SEQUENCE#)
--------------
            49

最后验证一下主备库角色是否正确:
SQL> select switchover_status,database_role from v$database;


SWITCHOVER_STATUS    DATABASE_ROLE
-------------------- ----------------
SESSIONS ACTIVE      PRIMARY


SQL> select switchover_status,database_role from v$database;


SWITCHOVER_STATUS    DATABASE_ROLE
-------------------- ----------------
TO PRIMARY           PHYSICAL STANDBY

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值