首页 > 代码库 > ORACLE DataGuard主备切换

ORACLE DataGuard主备切换

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

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

SQL> select * from v$version;
BANNER
---------------------------------------------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE    11.2.0.3.0      Production
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL 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 fal
NAME       TYPE        VALUE
---------- ----------- --------
fal_client string      SID_PRI
fal_server string      SID_DG

2、修改主库log_archive_dest_state_n及log_archive_dest_n。

SQL> show parameters log_archive_dest_state_2
NAME                      TYPE        VALUE
------------------------- ----------- -------log_archive_dest_state_2  string      DEFER
SQL> show parameters log_archive_dest_2
NAME               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_2
NAME                      TYPE        VALUE
------------------------- ----------- -------log_archive_dest_state_2  string      ENABLE
SQL> show parameters log_archive_dest_2
NAME               TYPE        VALUE
------------------ ----------- ------------------log_archive_dest_2 string      service=SID_PRI

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

alter database commit to switchover to primary;
shutdown immediate
startup mount
alter database open read write

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

SQL> show parameters standby_file_management
NAME                    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          0
ARCH      CONNECTED             0          0          0          0
ARCH      CONNECTED             0          0          0          0
ARCH      CONNECTED             0          0          0          0
MRP0      WAIT_FOR_LOG       8048          0          0          0
RFS       IDLE                  0          0          0          0
RFS       IDLE               8048     170025        824          0
RFS       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

 

本文出自 “LinuxOracle” 博客,请务必保留此出处http://onlinekof2001.blog.51cto.com/3106724/1589080

ORACLE DataGuard主备切换