ORA-16416: Switchover target is not synchronized with the primary

Oracle 10.2.0.1下新建的Dataguard的主备机间日志不同步,发生了“ORA-16416: 切换目标与主目标不同步”错误,通过在主库上重建一份standby controlfile,拷贝到备机替换原先的controlfile,重启即解决问题

主库上操作:

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> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN ;
ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN
*
ERROR at line 1:
ORA-16416: Switchover target is not synchronized with the primary


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.

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 243269632 bytes
Fixed Size 1218748 bytes
Variable Size 75499332 bytes
Database Buffers 163577856 bytes
Redo Buffers 2973696 bytes
数据库装载完毕。
SQL> alter database create standby controlfile as '/data/rman_backup/sdtby_control01.ctl';

数据库已更改。

SQL> alter database open;

数据库已更改。

先停止备库,再把生成的sdtby_control01.ctl文件拷贝到备机,替换掉原先备机的控制文件。
三个控制文件就复制三份,替换完原来的三个即可

然后在备库上操作:

SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area 243269632 bytes
Fixed Size 1218748 bytes
Variable Size 75499332 bytes
Database Buffers 163577856 bytes
Redo Buffers 2973696 bytes
数据库装载完毕。
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> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 /orahome/arch
最早的联机日志序列 45
下一个存档日志序列 0
当前日志序列 50

现在v$archived_log表里有数据了。

再次切换
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值