邏輯DG主備庫轉換的failover

靜以致遠√團團發表於2014-03-09

邏輯DG主備庫轉換的failover 

既然是failover,那麼就認為PRIMARY資料庫已經崩潰,需要馬上將其中的一個邏輯STANDBY資料庫置為PRIMAYD

 

雖然primary資料庫已經崩潰,如果能開啟資料到mount狀態,可以先檢視一下日誌情況,這樣可以對日誌進行一些操作,儘量的來減少資料的丟失,當然,也可以在資料庫不能mount的時候去歸檔路徑下檢視歸檔資訊。

 

SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)

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

            15

 

STANDBY > select sequence#,applied from dba_logstdby_log;

 SEQUENCE# APPLIED

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

        15 CURRENT

 

此處日誌已經完全被應用,如果發現有日誌未被髮送到STANDBY,可以手工的將日誌複製過去,並執行alter database register logical logfile ‘filename’語句手動的註冊

 

檢視邏輯standby的日誌應用情況

 

STANDBY > select applied_scn,latest_scn from v$logstdby_progress;

APPLIED_SCN  LATEST_SCN

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

     540775     540775

如果兩結果一致則證明日誌已經應用完畢,如果不一致,則需要啟動SQL應用

 

配置一下日誌的歸檔路徑

 

STANDBY >  alter system set log_archive_dest_1='location=/u01/log/arch_online valid_for=(online_logfiles, all_roles) db_unique_name=orcl_std';

System altered.

 

STANDBY >  alter system set log_archive_dest_3='location=/u01/log/arch_pri_log valid_for=(standby_logfiles, standby_roles) db_unique_name=orcl_std’;

System altered.

 

STANDBY > show parameter archive_dest;

 

NAME                                 TYPE        VALUE

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

log_archive_dest                     string

log_archive_dest_1                   string      location=/u01/log/arch_online

                                                 valid_for=(online_logfiles, al

                                                 l_roles) db_unique_name=orcl_s

                                                 td

log_archive_dest_10                  string

log_archive_dest_2                   string      service=orcl_p_tns arch valid_

                                                 for=(online_logfiles,primary_r

                                                 ole) db_unique_name=orcl_pri

log_archive_dest_3                   string      location=/u01/log/arch_pri_log

                                                  valid_for=(standby_logfiles,

                                                 standby_roles) db_unique_name=

                                                 orcl_std

轉換之前先看一下資料庫的角色

STANDBY > select database_role,force_logging from v$database;

 

DATABASE_ROLE    FOR

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

LOGICAL STANDBY  YES

 

開始轉換

STANDBY > alter database activate logical standby database finish apply;

Database altered.

 

該語句會聽著該standby資料庫的RFS服務,並應用當前已經接收但並未應用的日誌,並執行完畢手關閉SQL應用

 

再次檢視資料庫的角色

STANDBY > select database_role,force_logging from v$database;

 

DATABASE_ROLE    FOR

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

PRIMARY           YES

將該新的primary資料庫加入到原來的Data Guard環境中

 

standby資料庫執行:

SQL> alter session disable guard;

Session altered.

 

SQL> create database link dg_recover connect to scott identified by oracle using 'orcl_p_tns';

Database link created.

注意連線使用者必須有select_catalog_role的許可權,可以在想要的standby資料庫端賦予許可權

SQL > grant select_catalog_role to scott;

Grant succeeded.

 

SQL> alter session enable guard;

Session altered.

 

SQL> select sysdate from dual@dg_recover;

SYSDATE

---------

09-MAR-14

 

將該standby資料庫加入新的DG環境中去

 

SQL> alter database start logical standby apply new primary dg_recover;

Database altered.

 

要是有多個standby只需將它們新增到新的primary即可。

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

相關文章