近期因为工作的需要,研究了一些DG的东西,以下是:
Performing a Switchover to a Physical Standby Database的操作步骤
主要是参考官方文档和网上一些资料,整理而成。
1、减少实例
在切换之前必须把数据库减少为一个实例,即RAC的话,只留一个节点。
shutdown immediate
或(紧急时在辅助实例执行)
shutdown abort
2、首先在主库确认没有日志缺口:
SQL> select STATUS, GAP_STATUS from V$ARCHIVE_DEST_STATUS where DEST_ID = 2;
应该返回 VALID 和 NO GAP。
删除 LOG_ARCHIVE_DEST_N 参数中的所有延迟应用(delay)重做日志设置,你要确认所有变化都在备库应用,才能确保无数据丢失。
确认所有重做日志都已在备库应用,查询备库:
SQL> select NAME, VALUE, DATUM_TIME from V$DATAGUARD_STATS;
不应该返回 transport lag 或 apply lag, finish time 应该为0.
3、检查先决条件
检查完这些先决条件后,确认主库可以进行角色切换,查询主库:
SQL> select SWITCHOVER_STATUS from V$DATABASE;
如果返回 TO STANDBY 或 SESSIONS ACTIVE,那么主库就可以进行切换。
切换主库为备库命令为:
alter database commit to switchover to physical standby with session shutdown;
shutdown immediate
startup mount
4、备库切换为主库
查询备库是否可以切换为主库
select SWITCHOVER_STATUS from V$DATABASE;
如果返回 TO PRIMARY 或 SESSIONS ACTIVE,就可以切换。
如果返回 SWITCHOVER LATENT 或 SWITCHOVER PENDING,就要去检查告警日志,看有什么问题,一般是需要应用一些日志。
如果是需要应用日志的话,在备库执行如下命令:
recover standby database using backup controlfile;
在应用日志前应该是 SWITCHOVER PENDING 状态,完成应用后,会变成 TO PRIMARY 或 SESSIONS ACTIVE状态。
切换备库为主库:
alter database commit to switchover to primary with session shutdown;
打开新主库:
alter database open;
5、在原主库(现备库)启用日志应用
如果其他物理备库被停止,也需要启用日志应用
alter database recover managed standby databse using current logfile disconnect from session;