说明:前面部署了oracle 19c adg实现了数据的实时同步,在异常情况下,需要对现有的主备库进行切换,从而实现业务数据的可持续使用,在单一的切换数据库场景下,花费很短的时间,就可以实现数据库对外提供服务,但是在B/S业务服务场景下,可能需要对业务应用进行干预,才能使整个业务服务恢复正常,下面对单库切换进行演示。
一、检查主库运行情况
SQL>select database_role,protection_mode,protection_level,open_mode from v$database;
SQL> show parameter log_archive_config
SQL> show parameter log_archive_dest_2;
SQL> show parameter LOG_FILE_NAME_CONVERT;
SQL> show parameter DB_FILE_NAME_CONVERT;
SQL> show parameter FAL_SERVER;
SQL> select dest_id,status,error from v$archive_dest where dest_id=2;
二、检查备库运行情况
SQL> select name,role,instance,thread#,sequence#,action from gv$dataguard_process;
SQL> select dest_id,status,error from v$archive_dest where dest_id=2;
三、将主库切换到备库
1、现有主库切换状态
SQL> select name,database_role,switchover_status from v$database;
SQL> SELECT STATUS, GAP_STATUS FROM V$ARCHIVE_DEST_STATUS WHERE DEST_ID = 2;
2、现有备库切换状态
四、将主库切换为备库
说明:在进行主备库切换时,可以采用校验方式verify一下,查看是否切换过程中是否有报错;(下图说明无异常)
SQL> alter database switchover to orcldg verify;
SQL> alter database commit to switchover to physical standby with session shutdown;
五、将原备库切换为主库
SQL> alter database commit to switchover to physical primary ;
SQL> alter pluggable database all open;
SQL> select database_role from v$database;
DATABASE_ROLE
PRIMARY
六、备库应用日志
SQL> alter database recover managed standby database using current logfile disconnect from session;
SQL> select name,thread#,sequence#,action from v$dataguard_process;
备注:数据主备切换完成,主备库数据同步一致,角色可以来回切换,切换的过程中注意主备库数据是否一致,应用日志是否一致需要注意。
总结:oracle adg在配置参数文件中配置主备库同步参数时,db_file_name_convert,log_file_name_convert不写具体的本地目录地址,可以使用db_unique_name的名称来标明互传归档日志的目录,这样简化了dg配置工作。
2026.04.01
hefei