ITPub博客

首页 > Linux操作系统 > Linux操作系统 > RAC环境LOGICAL STANDBY的SWITCHOVER切换

RAC环境LOGICAL STANDBY的SWITCHOVER切换

原创 Linux操作系统 作者:yangtingkun 时间:2009-09-30 22:16:02 0 删除 编辑

介绍一下RAC环境下LOGICAL STANDBY数据库的SWITCHOVER切换。

 

 

PRIMARY数据库和STANDBY数据库采用的都是RAC 11.1.0.6 for Solaris10 sparc,共享存储PRIMARY数据库采用VOLUMN CLUSTER MANAGER,而STANDBY数据库使用ASM

在部署之前,首先检查目前的PRIMARY数据库是否满足切换后逻辑STANDBY的角色,发现目前PRIMARY数据库还没有建立STANDBY LOGFILE,因此首先创建PRIMARY数据库的STANDBY LOGFILE

root@newtrade1 # cd /dev/vx/rdsk/datavg
root@newtrade1 # vxassist -g datavg make rac11g_standby_redo1_1_1_1g 1025m user=oracle group=oinstall mode=660
root@newtrade1 # vxassist -g datavg make rac11g_standby_redo1_2_1_1g 1025m user=oracle group=oinstall mode=660
root@newtrade1 # vxassist -g datavg make rac11g_standby_redo1_3_1_1g 1025m user=oracle group=oinstall mode=660
root@newtrade1 # vxassist -g datavg make rac11g_standby_redo2_1_1_1g 1025m user=oracle group=oinstall mode=660
root@newtrade1 # vxassist -g datavg make rac11g_standby_redo2_2_1_1g 1025m user=oracle group=oinstall mode=660
root@newtrade1 # vxassist -g datavg make rac11g_standby_redo2_3_1_1g 1025m user=oracle group=oinstall mode=660
root@newtrade1 # su - oracle
Sun Microsystems Inc.   SunOS 5.10      Generic January 2005
$ sqlplus "/ as sysdba"

SQL*Plus: Release 11.1.0.6.0 - Production on 星期四 9 18 14:45:14 2008

Copyright (c) 1982, 2007, Oracle.  All rights reserved.


连接到:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options

SQL> alter database add standby logfile group 5 '/dev/vx/rdsk/datavg/rac11g_standby_redo1_1_1_1g' size 1g; 

数据库已更改。

SQL> alter database add standby logfile group 6 '/dev/vx/rdsk/datavg/rac11g_standby_redo1_2_1_1g' size 1g;

数据库已更改。

SQL> alter database add standby logfile group 7 '/dev/vx/rdsk/datavg/rac11g_standby_redo1_3_1_1g' size 1g;

数据库已更改。

SQL> alter database add standby logfile group 8 '/dev/vx/rdsk/datavg/rac11g_standby_redo2_1_1_1g' size 1g;

数据库已更改。

SQL> alter database add standby logfile group 9 '/dev/vx/rdsk/datavg/rac11g_standby_redo2_2_1_1g' size 1g;

数据库已更改。

SQL> alter database add standby logfile group 10 '/dev/vx/rdsk/datavg/rac11g_standby_redo2_3_1_1g' size 1g;

数据库已更改。

下面准备实施SWITCHOVER切换。

首先检查主库的状态:

SQL> select name,
  2     open_mode,
  3     database_role,
  4     guard_status,
  5     db_unique_name,
  6     primary_db_unique_name
  7  from v$database;

NAME      OPEN_MODE  DATABASE_ROLE    GUARD_S DB_UNIQUE_NAME                 PRIMARY_DB_UNIQUE_NAME
--------- ---------- ---------------- ------- ------------------------------ ------------------------------
RAC11G    READ WRITE PRIMARY          NONE    rac11g                         rac11g_s

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS
--------------------
SESSIONS ACTIVE

SQL> select inst_id,
  2     username,
  3     program,
  4     module
  5  from gv$session
  6  where username is not null;

   INST_ID USERNAME   PROGRAM                        MODULE
---------- ---------- ------------------------------ ------------------------------
         1 SYS        sqlplus@newtrade1 (TNS V1-V3)  sqlplus@newtrade1 (TNS V1-V3)
         1 SYS        racgimon@newtrade1 (TNS V1-V3) racgimon@newtrade1 (TNS V1-V3)
         1 SYS        oracle@newtrade1 (PZ99)        sqlplus@newtrade1 (TNS V1-V3)
         1 SYS        racgimon@newtrade1 (TNS V1-V3) racgimon@newtrade1 (TNS V1-V3)
         2 SYS        oracle@newtrade2 (PZ99)        sqlplus@newtrade1 (TNS V1-V3)
         2 SYS        racgimon@newtrade2 (TNS V1-V3) racgimon@newtrade2 (TNS V1-V3)

已选择6行。

虽然SWITCHOVER的状态为SESSION ACTIVE,但是剩下的会话已经没有其它用户的会话了,需要注意的是,目前实例2仍然启动,在执行SWITCHOVER的时候,应该只保留一个实例:

SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
rac11g2

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE
例程已经关闭。

检查STANDBY数据库状态,确保LOGICAL STANDBY数据库打开,且处于应用SQL的状态:

SQL> select instance_name, status from gv$instance;

INSTANCE_NAME    STATUS
---------------- ------------
rac11g1          OPEN
rac11g2          OPEN

SQL> select name,
  2     open_mode,
  3     database_role,
  4     guard_status,
  5     db_unique_name,
  6     primary_db_unique_name
  7  from v$database;

NAME      OPEN_MODE  DATABASE_ROLE    GUARD_S DB_UNIQUE_NAME  PRIMARY_DB_UNIQUE_NAME
--------- ---------- ---------------- ------- --------------- -------------------------
RAC11G_L  READ WRITE LOGICAL STANDBY  ALL     rac11g_s        rac11g

SQL> select * from v$logstdby_state;

PRIMARY_DBID SESSION_ID REALTIME_APPLY  STATE
------------ ---------- --------------- ------------------------------
  1712482917          1 Y               IDLE

关闭实例2

SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
rac11g2

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE
例程已经关闭。

下面回到PRIMARY数据库,准备切换:

SQL> alter database prepare to switchover to logical standby;

数据库已更改。

SQL> select name, switchover_status from v$database;

NAME      SWITCHOVER_STATUS
--------- --------------------
RAC11G    PREPARING SWITCHOVER

STANDBY库进行准备切换:

SQL> alter database prepare to switchover to primary;

Database altered.

SQL> select name, switchover_status from v$database;

NAME      SWITCHOVER_STATUS
--------- --------------------
RAC11G_L  PREPARING SWITCHOVER

再次检查主库,switchover_status应该变成TO LOGICAL STANDBY

SQL> select name, switchover_status from v$database;

NAME      SWITCHOVER_STATUS
--------- --------------------
RAC11G    TO LOGICAL STANDBY

将主库切换为LOGICAL STANDBY数据库:

SQL> alter database commit to switchover to logical standby;

数据库已更改。

检查逻辑STANDBY数据库的状态是否为TO PRIMARY

SQL> select name, switchover_status from v$database;

NAME      SWITCHOVER_STATUS
--------- --------------------
RAC11G_L  TO PRIMARY

下面可以将STANDBY数据库切换为PRIMARY数据库:

SQL> alter database commit to switchover to primary;

Database altered.

最后打开新逻辑STANDBY数据库的SQL应用即可:

SQL> alter database start logical standby apply immediate;

数据库已更改。

检查逻辑STANDBY运行情况:

SQL> select * from v$logstdby_state;

PRIMARY_DBID SESSION_ID REALTIME_APPLY  STATE
------------ ---------- --------------- ------------------------------
  3515162368          1 Y               IDLE

下面可以将主库和STANDBY数据库的第二实例启动:

SQL> startup
ORACLE
例程已经启动。

Total System Global Area 1.7108E+10 bytes
Fixed Size                  2101632 bytes
Variable Size            3478638208 bytes
Database Buffers         1.3623E+10 bytes
Redo Buffers                4431872 bytes
数据库装载完毕。
数据库已经打开。
SQL> select instance_name, status from gv$instance;

INSTANCE_NAME    STATUS
---------------- ------------
rac11g2          OPEN
rac11g1          OPEN

SQL> select name,
  2     open_mode,
  3     database_role,
  4     guard_status,
  5     db_unique_name,
  6     primary_db_unique_name
  7  from v$database;

NAME      OPEN_MODE  DATABASE_ROLE    GUARD_S DB_UNIQUE_NAME  PRIMARY_DB_UNIQUE_NAME
--------- ---------- ---------------- ------- --------------- -------------------------
RAC11G_L  READ WRITE PRIMARY          NONE    rac11g_s        rac11g

STANDBY数据库打开第二实例后:

SQL> startup
ORACLE
例程已经启动。

Total System Global Area 1.7108E+10 bytes
Fixed Size                  2101632 bytes
Variable Size            4149726848 bytes
Database Buffers         1.2952E+10 bytes
Redo Buffers                4431872 bytes
数据库装载完毕。
数据库已经打开。
SQL> select instance_name, status from gv$instance;

INSTANCE_NAME    STATUS
---------------- ------------
rac11g2          OPEN
rac11g1          OPEN

SQL> select name,
  2     open_mode,
  3     database_role,
  4     guard_status,
  5     db_unique_name,
  6     primary_db_unique_name
  7  from v$database;

NAME      OPEN_MODE  DATABASE_ROLE    GUARD_S DB_UNIQUE_NAME  PRIMARY_DB_UNIQUE_NAME
--------- ---------- ---------------- ------- --------------- -------------------------
RAC11G    READ WRITE LOGICAL STANDBY  ALL     rac11g          rac11g_s

至此,RAC环境的LOGICAL STANDBYSWICHOVER切换完成。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-615920/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-29

  • 博文量
    1955
  • 访问量
    10425891