實戰dataguard主從切換

wzq609發表於2014-03-26

前言:

       眾所周知DataGuard一般的切換分成兩種,一種是系統正常的情況下的切換這種方式為:switchover是無損切換,不會丟失資料;另外一種方式屬於災難情況下的切換,這種情況下一般主庫已經啟動不起來了,為failover,有可能會丟失資料,並且切換後原primary 資料庫也不再是該data guard 配置的一部分了。

       本文先簡單的介紹在正常情況下執行的系統切換測試; 

 

整個dataguard的搭建,請參考實戰ORACLE DataGuard不停機的配置,只要按照該文件操作,保證沒有問題;

 

環境資訊:

hostname

db_name

db_unique_name

role

dg2

orcl

orcldg2

PRIMARY

dg1

orcl

orcldg1

STANDBY

 

切換步驟:

一、主庫的操作

1、主資料庫的狀態檢查

指令碼:SQL> select switchover_status from v$database;

說明:如果該列值為"TO STANDBY"則表示primary 資料庫支援轉換為standby 角色,否則的話你就需要重新檢查一下Data Guard 配置,比如看看LOG_ARCHIVE_DEST_n 之類引數值是否正確有效等等。

 

2、首先將primary 轉換為standby 的角色

指令碼:SQL> alter database commit to switchover to physical standby;

說明:PRIMARY進行轉換完畢後,檢視狀態會變成RECOVERY NEEDED;

 

3、重啟動到mount --原primary 資料庫操作

SQL> shutdown immediate

ORA-01507: 未裝載資料庫

ORACLE 例程已經關閉。

SQL> startup mount

ORACLE 例程已經啟動

 

二、備庫切換成主庫的操作

完成以上操作後,變可以進行以下備庫的操作

1、檢查備庫的狀態

指令碼:指令碼:SQL> select switchover_status from v$database;

 

2、確認沒有問題後,可以進行切換轉換standby 到primary 角色

指令碼:SQL> alter database commit to switchover to primary;

 

3、完成轉換,開啟新的primary 資料庫

SQL> alter database open;

 

4、檢視當前系統的狀態

指令碼:select name,open_mode,database_role,protection_mode,SWITCHOVER_STATUS  From v$database;

 

三、原主庫切換成備庫

當前的備庫是mount狀態了,執行以下語句

1、執行日誌的運用

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

 

2、取消日誌的運用

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;  

 

3、開啟資料庫

SQL> ALTER DATABASE OPEN;

 

4、在open狀態下執行日誌的即時運用

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

 

四、測試

1、在dg1上面插入一個表test,並插入數值1

 

2、在dg2上面檢查

 

大功告成了,資料馬上傳送到dg2了;

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

相關文章