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