Oracle 11g RAC+Dataguard 主备切换

一、Dataguard主备切换过程(switchover)

主切备 (rac_to_single)

备切主 (single_to_rac)

一般switchover切换都是计划中的切换,特点是在切换后,不会丢失任何的数据,而且这个过程是可逆的,整个dataguard环境不会被破坏,原来Dataguard环境中的所有物理和逻辑standby都可以继续工作。

在进行Dataguard的物理standby切换前需要注意:

1)确认主库和从库间网络连接畅通;

2)确认没有活动的会话连接在数据库中;

3)primart数据库处于打开的状态,standby数据库处于mount状态ADG;

4)确保standby数据库处于archivelog模式;

5)如果设置了redo应用的延迟,那么将这个设置去掉;

6)确保配置了主库和从库的初始化参数,使得切换完成后,dataguard机制可以顺利的运行。

2、dataguard主备切换过程(failover)

failover切换一般是primary数据库发生故障后的切换,这种情况是standby数据库发挥其作用的情况。这种情况下切换对redo的处理,就显得很重要。如果处理好。就不会有数据丢失,否则就会有数据丢失。而且

这个过程是不可逆的,dataguard环境会被破坏。

由于primary数据库无法启动,所以failover切换所需要的条件并不多,只要检查standby是否运行在最大保护模式下,如果是的话,需要将其置为最大性能模式,否则切换到primary角色也无法启动。

但如果主库在发生故障前,开启了闪回功能,那在将备库切换为主库后,还可以将原来的主库闪回到故障前,在重新改为备库,这样,又可以组成一套完整的dg。

二、Dataguard主备切换过程(switchover)

1、查看主库状态和备库状态

注意主库的活动会话 、备库可以切换的状态(not alloved,to primary)

select database_role,switchover_status from v$database;

2、关闭主库上的第二个节点。

srvctl stop instance -d racdb -i racdb2

srvctl stop instance -d racdb -n rac2

3、查看备库是不是最大性能模式

select database_role,switchover_status from v$database;

select * from v$archived_log where applied='NO';

4、主库操作

正常切换命令

alter database commit to switchover to physical standby;

主库状态是session active

alter database commit to switchover to physical standby with session shutdown;

启动到mount状态

startup mount;

5、备库操作

select database_role,switchover_status from v$database;

alter database commit to switchover to primary;

select database_role,switchover_status from v$database;

6、检查参数

新主库单机:

alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(standbydb,racdb)' scope=both sid='*';

alter system set LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=standbydb' scope=both sid='*';

alter system set LOG_ARCHIVE_DEST_2='SERVICE=racdb LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=racdb' scope=both sid='*';

alter system set log_archive_format='%t_%s_%r.arc' scope=spfile sid='*';

alter system set FAL_SERVER='racdb' scope=both sid='*';

alter system set fal_client='standbydb' scope=both sid='*';

新备库rac双机

alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(racdb,standbydb)' scope=both sid='*';

alter system set LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=racdb' scope=both sid='*';

alter system set LOG_ARCHIVE_DEST_2='SERVICE=standbydb LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standbydb' scope=both sid='*';

alter system set log_archive_format='%t_%s_%r.arc' scope=spfile sid='*';

alter system set fal_client='racdb' scope=both sid='*';

alter system set FAL_SERVER='standbydb' scope=both sid='*';

7、新备库启动mrp进程

启动

alter database recover managed standby database disconnect from session;

8、open新主库

alter database open;

切换日志测试

9、备库启动ADG模式

关闭

alter database recover managed standby database cancel;

alter database recover managed standby database disconnect from session;

启动rac2

srvctl start instance -d racdb -i racdb2

查看 db_create_file_dest

show parameter db_create_file_dest

alter system reset db_create_file_dest sid='*';

重启备库

srvctl stop database -d racdb;

srvctl start database -d racdb;

10、启动实时同步模式

alter database recover managed standby database cancel;

alter database recover managed standby database using current logfile disconnect;

欢迎关注“自学Oracle”

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180830G1436E00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券