RAC環境LOGICAL STANDBY的FAILOVER切換

yangtingkun發表於2009-10-01

介紹一下RAC環境下LOGICAL STANDBY資料庫的FAILOVER切換。

 

 

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切換完成。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-615941/,如需轉載,請註明出處,否則將追究法律責任。

相關文章