邏輯Data Guard主備庫的轉換

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

邏輯DG主備庫的轉換


 

SQL> show parameter FAL;

NAME                                 TYPE        VALUE

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

fal_client                           string      orcl_p.1_tns

fal_server                           string      orcl_s.2_tns

 

SQL> show parameter log_archive_dest;

NAME                                 TYPE        VALUE

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

log_archive_dest                     string

log_archive_dest_1                   string      location=/u01/arch

log_archive_dest_10                  string

log_archive_dest_2                   string      service=orcl_s.2_tns arch vali

                                             d_for=(online_logfiles, primar

                                             y_role) db_unique_name=orcl2

log_archive_dest_3                   string

log_archive_dest_4                   string

log_archive_dest_5                   string

log_archive_dest_6                   string

log_archive_dest_7                   string

 

NAME                                 TYPE        VALUE

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

log_archive_dest_8                   string

log_archive_dest_9                   string

log_archive_dest_state_1             string      enable

log_archive_dest_state_10            string      enable

log_archive_dest_state_2             string      ENABLE

log_archive_dest_state_3             string      enable

log_archive_dest_state_4             string      enable

log_archive_dest_state_5             string      enable

log_archive_dest_state_6             string      enable

log_archive_dest_state_7             string      enable

log_archive_dest_state_8             string      enable

NAME                                 TYPE        VALUE

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

log_archive_dest_state_9             string      enable

 

SQL> alter system set log_archive_dest_3='location=/u01/arch1 valid_for=(online_logfiles, all_roles) db_unique_name=orcl1' ;

System altered.

 

SQL> alter system set log_archive_dest_3='location=/u01/arch2 valid_for=(standby_logfiles, standby_role) db_unique_name=orcl1' ;

System altered.

 

SQL> show parameter log_archive_dest;

NAME                                 TYPE        VALUE

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

log_archive_dest                  string

log_archive_dest_1               string      location=/u01/arch

log_archive_dest_10             string

log_archive_dest_2               string      service=orcl_s.2_tns arch vali

                                                       d_for=(online_logfiles, primar

                                                       y_role) db_unique_name=orcl2

log_archive_dest_3              string       location=/u01/arch2 valid_for=

                                                       (standby_logfiles, standby_rol

                                                        e) db_unique_name=orcl1

log_archive_dest_4               string

log_archive_dest_5               string

。。。。。。

 

建立三組standby 的 redolog (至少也要兩組)

 

SQL> alter database add standby logfile group 4 '/u01/app/oracle/oradata/orcl/stdredo01.log' size 50m;

Database altered.

 

SQL> alter database add standby logfile group 5 '/u01/app/oracle/oradata/orcl/stdredo02.log' size 50m;

Database altered.

 

SQL> alter database add standby logfile group 6 '/u01/app/oracle/oradata/orcl/stdredo03.log' size 50m;

Database altered.

 

檢視一下primaryswitchover狀態,結果為TO STANDBY或者SESSIONS ACTIVE視為正常

 

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS

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

SESSIONS ACTIVE

 

primary資料庫置為將要裝換的狀態

 

SQL> alter database prepare to switchover to logical standby;

Database altered.

 

檢視當前資料庫狀態

 

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS

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

PREPARING SWITCHOVER

 

將邏輯standby資料庫轉換為primary

 

STANDBY > alter database prepare to switchover to primary;

Database altered.

 

檢視備份資料庫的狀態

STANDBY > select switchover_status from v$database;

SWITCHOVER_STATUS

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

PREPARING SWITCHOVER

 

此時檢視primary資料庫的轉換狀態

 

PRIMARY >select switchover_status from v$database;

SWITCHOVER_STATUS

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

TO LOGICAL STANDBY

 

primary資料庫轉換為邏輯的standby

 

PRIMARY >alter database commit to switchover to logical standby;

Database altered.

 

返回再去看看原standby資料庫的狀態,很神奇

 

STANDBY > select switchover_status from v$database;

SWITCHOVER_STATUS

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

TO PRIMARY

 

將該standby資料庫轉換為primary

STANDBY > alter database commit to switchover to primary;

Database altered.

 

邏輯standby轉換完成,注意將新轉換來的standby啟動SQL應用

 

PRIMARY >set sqlprompt 'NEW_STANDBY > '

 

NEW_STANDBY > alter database start logical standby apply immediate;

Database altered.

 

在心的primary端新增資料進行檢測:

STANDBY > set sqlprompt 'NEW_PRIMARY > '

NEW_PRIMARY > select * from scott.dg_test;

ID

----------

DG_TEST_1

DG_TEST_2

DG_TEST_3

DG_TEST_4

 

NEW_PRIMARY > insert into scott.DG_TEST

  2  values('DG_TEST_5')

  3  /

1 row created.

 

NEW_PRIMARY > select * from scott.DG_TEST;

ID

----------

DG_TEST_1

DG_TEST_2

DG_TEST_3

DG_TEST_4

DG_TEST_5

 

NEW_PRIMARY > commit;

Commit complete.

 

NEW_PRIMARY > alter system switch logfile;

System altered.

 

在新的standby端檢視資料是否接收

NEW_STANDBY > select * from scott.dg_test;

ID

----------

DG_TEST_1

DG_TEST_2

DG_TEST_3

DG_TEST_4

DG_TEST_5

 

小結:

1、在進行轉換前,要確定備庫的設定健全,比如幾個不同日誌存放目錄的設定

2、在將資料庫置為開始轉換狀態時,由於,或因某些原因另一資料庫無法自動到’TO STANDBY’或’TO PRIMAYR’狀態,可用下列語句取消轉換狀態:

alter database prepare to switchover cancel;

 

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

相關文章