ITPub博客

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

RAC环境STANDBY的FAILOVER切换

原创 Linux操作系统 作者:yangtingkun 时间:2009-08-02 21:46:07 0 删除 编辑

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

 

 

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

STANDBY数据库环境已经建立完成,下面准备实施FAILOVER切换。

FAILOVER切换一般是PRIMARY数据库发生故障后的切换,这种情况是STANDBY数据库发挥其作用的情况。这种切换发生后,可能会造成数据的丢失。而且这个过程不是可逆的,DATA GUARD环境会被破坏。

由于PRIMARY数据库已经无法启动,所以FAILOVER切换所需的条件并不多,只要检查STANDBY是否运行在最大保护模式下,如果是的话,需要将其置为最大性能模式,否则切换到PRIMARY角色也无法启动。

为了模拟FAILOVER的特点主库的两个实例都通过SHUTDOWN ABORT方式关闭。

SQL> shutdown abort
ORACLE
例程已经关闭。

另外一个实例也关闭:

SQL> shutdown abort
ORACLE
例程已经关闭。

下面登陆STANDBY数据库,检查是否有ARCHIVE GAP存在:

SQL> select thread#, low_sequence#, high_sequence# from v$archive_gap;

未选定行

如果GAP存在,应该到主服务器上尽可能寻找到,这样切换的时候可以少丢失数据。

确认实例2已经关闭,将实例1需求日志恢复操作:

SQL> alter database recover managed standby database cancel;

数据库已更改。

SQL> alter database recover managed standby database finish;

数据库已更改。

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS
--------------------
TO PRIMARY

下面就可以指向切换了:

SQL> alter database commit to switchover to primary;

数据库已更改。

SQL> alter database 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 PRIMARY          NONE    rac11g_s             rac11g

至此切换已经完成,两个数据库的STANDBY关系已经失去,即使源数据库重新启动,两个数据库也不能恢复STANDBY的机制了。

最后启动实例2进行检查:

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    READ WRITE PRIMARY          NONE    rac11g_s             rac11g

由于不需要考虑主库的状态,FAILOVER的切换相对比较简单。

 

 

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

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

注册时间:2007-12-29

  • 博文量
    1955
  • 访问量
    10424584