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


FAILOVER切换用于主库不可用的情况。


这种情况相对比较简单,不需要太多的准备工作,不过为了模拟,首先将PRIMARY数据库关闭:


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


SQL> shutdown immediate


数据库已经关闭。


已经卸载数据库。


ORACLE例程已经关闭。


下面关闭实例2:


SQL> select instance_name from gv$instance;


INSTANCE_NAME


----------------


rac11g2


SQL> shutdown immediate


数据库已经关闭。


已经卸载数据库。


ORACLE例程已经关闭。


下面关闭LOGICAL STANDBY的第2实例:


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


SQL> shutdown immediate


数据库已经关闭。


已经卸载数据库。


ORACLE例程已经关闭。


检查实例1:


SQL> select instance_name, status from gv$instance;


INSTANCE_NAME    STATUS


---------------- ------------


rac11g1          OPEN


如果可以找到最新的归档日志,可以拷贝到本地数据库,并通过ALTER DATABASE REGISTER LOGICAL LOGFILE来注册。


下面就将LOGICAL STANDBY数据库切换未主数据库了:


SQL> select instance_name, status from gv$instance;


INSTANCE_NAME    STATUS


---------------- ------------


rac11g1          OPEN


SQL> alter database activate logical standby database;


数据库已更改。


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


如果希望LOGICAL STANDBY应用完所有的日志在切换为主库,可以在ALTER DATABASE ACTIVATE语句最后添加FINISH APPLY语句。


下面数据库已经切换为主库,两个数据库直接已经没有联系了。


将两个数据库都启动,检查一下数据库的运行情况:


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          rac11g_s


连接另外一个数据库:


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


至此,FAILOVER切换完成。


oracle视频教程请关注:http://u.youku.com/user_video/id_UMzAzMjkxMjE2.html