主備角色switch

張衝andy發表於2017-03-12

理論知識:
Switchover 切換允許primary 和一個備庫進行切換,並且這種切換沒有資料丟失。

前提條件:

1) 主備庫相關引數 fal_client、fal_server 、standby_file_management 、 db_file_name_convert 、
log_file_name_convert 都已經配置。 standby logfile 日誌組已建立。
(驗證主備庫的配置資訊,包括初始化引數,歸檔模式,standby redo logs 和online redo log。 )

2)在主庫查詢V$ARCHIVE_DEST_STATUS 檢視,驗證備庫沒有redo 傳輸錯誤 或者redo gap。
SQL> SELECT STATUS, GAP_STATUS FROM V$ARCHIVE_DEST_STATUS WHERE DEST_ID = 2;
STATUS GAP_STATUS
--------- ------------------------
VALID NO GAP
只有這裡狀態是VALID 和NOGAP的情況下,才可以進行角色切換操作。

3) 確保主備庫Temp 表空間一致。

4) 移除standby 上任何delay apply redo 的設定。

5) 如果是將RAC 主庫切換到物理備庫,RAC 主庫只能保留一個節點,其他節點要關閉,在switchover 完成以後在啟動關閉的節點即可。

6) 如果備庫是real-time apply 的物理standby,並且是read only 模式,在切換之前,建議先將備庫啟動到mount狀態,而不是open狀態,這樣可以實現最快速的角色切換,而不需要在切換之前清除使用者的session連線。

7)如果有多個standby,在Role Transition 時如何選擇 。 考慮位置,效能,資料庫型別

主庫引數檢查:
SQL> show parameter fal_client
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
fal_client string devdb1
SQL> show parameter fal_server
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
fal_server string phydb
SQL> show parameter standby_file_management
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
standby_file_management string MANUAL
SQL> show parameter db_file_name_convert
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string +DATA/phydb/, +DATA/devdb/
SQL> show parameter log_file_name_convert
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_file_name_convert string +DATA/phydb/, +DATA/devdb/
SQL> select group# from v$standby_log;
GROUP#
----------
4
5
6
7

備庫引數檢查:
SQL> show parameter fal_client
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
fal_client string phydb
SQL> show parameter fal_server
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
fal_server string devdb1
SQL> show parameter standby_file_management
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
standby_file_management string AUTO
SQL> show parameter db_file_name_convert
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string +DATA/devdb/, +DATA/phydb/
SQL> show parameter log_file_name_convert
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_file_name_convert string +DATA/devdb/, +DATA/phydb/
SQL> select group# from v$standby_log;
GROUP#
----------
4
5
6
7

特別提醒: 作者環境為一個節點的rac+單節點dg 。 不同於兩個節點的rac+dg,操作上有細微區別。如兩個節點的rac,一個節點需shutdown,一個節點操作。

切換模式 :一個節點的rac主庫切換備庫,單節點備庫切換成主庫 。

1. 將主庫切換成standby role:
SQL> alter database commit to switchover to physical standby with session shutdown;
Database altered.

2. 將原備庫切換成主庫 , 並 open 。
SQL> alter database commit to switchover to primary with session shutdown;
Database altered.

SQL> ALTER DATABASE OPEN;
Database altered.

3. 原主庫並啟動到open狀態,啟動 mgr 程式。
SQL> startup;
ORACLE instance started.
Total System Global Area 839282688 bytes
Fixed Size 2257880 bytes
Variable Size 603982888 bytes
Database Buffers 230686720 bytes
Redo Buffers 2355200 bytes
Database mounted.
Database opened.

SQL> alter database recover managed standby database using current logfile disconnect from session;
Database altered.

4. 驗證
SQL> SELECT DEST_ID, STATUS,APPLIED_SCN FROM V$ARCHIVE_DEST WHERE TARGET='STANDBY';
DEST_ID STATUS APPLIED_SCN
---------- --------- -----------
2 VALID 0

切換模式: 單節點主庫切換成備庫,一個節點rac備庫切換成主庫。

1. 確認主庫,新主庫切換成備庫
SQL> select name,database_role,switchover_status from v$database;
NAME DATABASE_ROLE SWITCHOVER_STATUS
--------- ---------------- --------------------
DEVDB PRIMARY TO STANDBY
SQL> alter database commit to switchover to physical standby with session shutdown;
Database altered.
2. 新備庫切換成主庫 , 並 open 。
SQL> alter database commit to switchover to primary with session shutdown;
Database altered.

SQL> alter database open;
Database altered.

3. 現備庫open ,並啟動 mgr 程式。 
SQL> startup;
ORACLE instance started.
Total System Global Area 839282688 bytes
Fixed Size 2257880 bytes
Variable Size 603982888 bytes
Database Buffers 230686720 bytes
Redo Buffers 2355200 bytes
Database mounted.
Database opened.
SQL> alter database recover managed standby database using current logfile disconnect from session; 
Database altered.

4. 主庫執行檢查
SQL> SELECT DEST_ID, STATUS,APPLIED_SCN FROM V$ARCHIVE_DEST WHERE TARGET='STANDBY';
DEST_ID STATUS APPLIED_SCN
---------- --------- -----------
2 VALID 1879072

 


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

相關文章