千家信息网

ORACLE DataGuard主备切换

发表于:2024-09-30 作者:千家信息网编辑
千家信息网最后更新 2024年09月30日,主库磁盘问题,导致主库宕机,因为归档还没有应用,导致备库无法转为主库先查看一下备库当前的信息:SQL> select * from v$version;BANNER------------------
千家信息网最后更新 2024年09月30日ORACLE DataGuard主备切换

主库磁盘问题,导致主库宕机,因为归档还没有应用,导致备库无法转为主库

先查看一下备库当前的信息:

SQL> select * from v$version;BANNER---------------------------------------------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit ProductionPL/SQL Release 11.2.0.3.0 - ProductionCORE    11.2.0.3.0      ProductionTNS for Linux: Version 11.2.0.3.0 - ProductionNLSRTL Version 11.2.0.3.0 - Production

查看当前数据库的状态:

SQL> select open_mode from v$database;OPEN_MODE--------------------READ ONLY

该启动状态分为NOMOUNT,MOUNT,READ ONLY,READ WRITE四种状态

查看DG主备库的切换状态:

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;SWITCHOVER_STATUS--------------------TO STANDBY

DG失效切换状态包括NOT ALLOWED,SESSIONS ACTIVE,TO STANDBY,TO PRIMARY。当主库为TO STANDBY时,表示主库可以进行主备角色的切换。

ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;

如遇到以下错误提示,说明主备间还有活动的会话链接

ORA-01093: ALTER DATABASE CLOSE only permitted with no sessions connected

可以通过以下语句强制关闭活动会话:

ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;

ORA-16139: media recovery required

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH SKIP STANDBY LOGFILE;

主库角色切换为备库后,还有部分参数需要修改。

1、修改获取归档的C/S端,这里的FAL(Fetch Archive Log)

SQL> show parameters falNAME       TYPE        VALUE---------- ----------- --------fal_client string      SID_PRIfal_server string      SID_DG

2、修改主库log_archive_dest_state_n及log_archive_dest_n。

SQL> show parameters log_archive_dest_state_2NAME                      TYPE        VALUE------------------------- ----------- -------log_archive_dest_state_2  string      DEFER
SQL> show parameters log_archive_dest_2NAME               TYPE        VALUE------------------ ----------- ------------------log_archive_dest_2 string      service=SID_DG

3、修改备库log_archive_dest_state_n及log_archive_dest_n。

SQL> show parameters log_archive_dest_state_2NAME                      TYPE        VALUE------------------------- ----------- -------log_archive_dest_state_2  string      ENABLE
SQL> show parameters log_archive_dest_2NAME               TYPE        VALUE------------------ ----------- ------------------log_archive_dest_2 string      service=SID_PRI

4、查看备库状态 SESSIONS ACTIVE 切换角色为主库

alter database commit to switchover to primary;shutdown immediatestartup mountalter database open read write

5、查看备库的文件管理状态

SQL> show parameters standby_file_managementNAME                    TYPE        VALUE----------------------- ----------- ---------standby_file_management string      AUTO

6、切换备库进入恢复模式:

alter database recover managed standby database disconnect from session;

7、查看主备归档同步情况:

SQL> select  process, status,sequence#,block#,blocks, delay_mins from v$managed_standby;PROCESS   STATUS        SEQUENCE#     BLOCK#     BLOCKS DELAY_MINS--------- ------------ ---------- ---------- ---------- ----------ARCH      CONNECTED             0          0          0          0ARCH      CONNECTED             0          0          0          0ARCH      CONNECTED             0          0          0          0ARCH      CONNECTED             0          0          0          0MRP0      WAIT_FOR_LOG       8048          0          0          0RFS       IDLE                  0          0          0          0RFS       IDLE               8048     170025        824          0RFS       IDLE                  0          0          0          0

只要备库的MRP(Managed Recovery Process)进程启动,就表示归档正常进行

SQL> select dest_name,status,target,archiver,schedule, valid_type,valid_role,db_unique_name from v$archive_dest where dest_name='LOG_ARCHIVE_DEST_2';DEST_NAME                 STATUS    TARGET  ARCHIVER   SCHEDULE VALID_TYPE      VALID_ROLE   DB_UNIQUE_NAME------------------------- --------- ------- ---------- -------- --------------- ------------ ------------------------------LOG_ARCHIVE_DEST_2        VALID     STANDBY LGWR       ACTIVE   ALL_LOGFILES    ALL_ROLES    NONE
0