Oracle 10g r2上switch over主备库的过程演示


当前状态是dg1为主库,备库为dg2
先检查主备库状态:
dg1

SQL> select name,database_role,OPEN_MODE,SWITCHOVER_STATUS from v$database;
DATABASE_ROLE    OPEN_MODE  SWITCHOVER_STATUS
---------------- ---------- --------------------
PRIMARY          READ WRITE SESSIONS ACTIVE

dg2

SQL> select database_role,OPEN_MODE,SWITCHOVER_STATUS from v$database;
DATABASE_ROLE    OPEN_MODE  SWITCHOVER_STATUS
---------------- ---------- --------------------
PHYSICAL STANDBY MOUNTED    NOT ALLOWED

现在dg1(当前主库)上操作以下步骤:

SQL>  alter database commit to switchover to physical standby with session shutdown;
Database altered.
SQL> shutdown immediate;
ORA-01507: database not mounted
Oracle instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area  390070272 bytes
Fixed Size                  2021024 bytes
Variable Size            150997344 bytes
Database Buffers          234881024 bytes
Redo Buffers                2170880 bytes
Database mounted.
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
TO PRIMARY

现在dg2(当前备库)上操作以下步骤:

SQL> select name,database_role,OPEN_MODE,SWITCHOVER_STATUS from v$database;
NAME      DATABASE_ROLE    OPEN_MODE  SWITCHOVER_STATUS
--------- ---------------- ---------- --------------------
ORCLDB    PHYSICAL STANDBY MOUNTED    TO PRIMARY
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
TO PRIMARY
SQL>  alter database commit to switchover to primary;
Database altered.
SQL> alter database open;
Database altered.
SQL> select name,database_role,OPEN_MODE,SWITCHOVER_STATUS from v$database;
NAME      DATABASE_ROLE    OPEN_MODE  SWITCHOVER_STATUS
--------- ---------------- ---------- --------------------
ORCLDB    PRIMARY          READ WRITE SESSIONS ACTIVE


以上的操作已经完成了主备的切换,现在dg2为主库,dg1为备库,接下来我们在现在的主库dg2上做几次日志变化,看dg1能否同步过来。
dg1上看已经归档的日志:
SQL> select registrar,creator thread#,sequence#,first_change#,next_change# from v$archived_log;
REGISTR THREAD#  SEQUENCE# FIRST_CHANGE# NEXT_CHANGE#
------- ------- ---------- ------------- ------------
FGRD    FGRD            29        586174      586196
dg2上经过几次日志切换,
SQL> select * from v$log;
GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS          FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
1          1        36  52428800          1 NO  CURRENT                586469 05-JAN-14
2          1        34  52428800          1 YES INACTIVE                586464 05-JAN-14
3          1        35  52428800          1 YES INACTIVE                586467 05-JAN-14

可以看出现在日志已经到了36,那么我们在dg1上应用日志,应该会应用到日志35;
以下操作验证:

SQL> alter database recover managed standby database disconnect from session;
Database altered.
SQL> select registrar,creator thread#,sequence#,first_change#,next_change# from v$archived_log;
REGISTR THREAD#  SEQUENCE# FIRST_CHANGE# NEXT_CHANGE#
------- ------- ---------- ------------- ------------
RFS    ARCH            34        586464      586467
RFS    ARCH            35        586467      586469

以上的主备切换过程就已经顺利进行完成。

推荐阅读:

RedHat Linux 5 & CentOS 5下Oracle 10g安装详解

CentOS 6.3(x32)下安装Oracle 10g R2

Linux-6-64下安装Oracle 12C笔记

相关内容