一、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”
领取专属 10元无门槛券
私享最新 技术干货