2022年4月25日 星期一

6. Snapshot Standby

Snapshot Standby 是 Oracle 11g 開始有的新功能,主要是可以將 Standby Database 開啟為 read / write 模式又不會破壞原本 Data Guard 的機制,傳統的 Standby Database 都是處於 mount 狀態下進行 Log Apply ,即便是 open 也只能在唯讀 (read only) 模式,對於有讀寫需求的 Application 就無法在 Standby Database 上進行測試或者是驗證 Standby 的資料與功能,而 Snapshot Standby 就可以解決這個問題。


以往建立的 Standby Database 總會讓人有個疑問,懷疑這個 Standby 的功能是否正常,資料是否正確,萬一有天 Primary 發生問題時, Standby Database 是否可以馬上承接所有的業務 ? 而 Snapshot Standby 正好可以將 Standby 開啟為 read / write 模式進行這些驗證,等到驗證完畢後再還原回原本的 Physical Standby 繼續進行 Data Guard 的同步,不僅可以消除對 Standby Database 的顧慮,同時也不會破壞原本 Data Guard 的機制,可以說是一舉兩得的功能。


Snapshot Standby 開啟為 read / write 模式又不會破壞原本的 Data Guard 機制,主要是使用資料庫 Flashback 的特性來達到這個目的,在 Standby Database 轉換為 Snapshot Standby 的同時,會自動 Enable Flashback Database 的功能,並且同時建立 Restore Point ,在 Snapshot Standby 轉換回 Physical Standby 時,就會使用 Flashback Database 這個功能將 Standby Flashback 回到 Restore Point ,然後再從 Restore Point 這個時間點繼續進行 Data Guard 的同步,由於使用了 Flashback ,所以在 Snapshot Standby 開啟為 read / write 時的所有異動都會被還原,也因此不會影響到原本 Data Guard 的同步。


將 Physical Standby 轉換為 Snapshot Standby 只需要幾個簡單的命令就可以完成,由於會啟用 Flashback Database 功能,所以先要確認 Recovery Area 的相關參數是否已經設置 :


準備完成後就可以停止 MRP :

SQL> alter database recover managed standby database cancel;


然後執行轉換至 Snapshot Standby ,並且將 Database Open :

SQL> alter database convert to snapshot standby;

SQL> alter database open;


轉換完成後可以由 v$database 查得 Database Role 為 Snapshot Standby 並且為 Read Write 模式:


轉換回 Physical Standby 必須將 Standby 重啟至 mount 狀態進行轉換,完成後再啟動 MRP :

SQL> shutdown immediate

SQL> startup mount

SQL> alter database convert to physical standby;

SQL> alter database recover managed standby database disconnect;


如果是使用 Data Guard Broker ,只需簡單執行 convert 動作就好 :

DGMGRL> convert database 'orcls' to snapshot standby;

  (轉換 orcls 為 snapshot standby)


DGMGRL> convert database 'orcls' to physical standby;

  (轉換 orcls 回 physical standby)


使用 Data Guard Broker 執行轉換之後,由 show configuration 可以看到 orcls 的角色變為 Snapshot Standby :


最後要注意的是,由於 Snapshot Standby 使用的是 Flashback Database 功能,因此開啟後的異動要注意 Recovery Area 的空間是否足夠容納 Flashback Log ,當開啟時間越久以及異動量越大,那麼 Recovery Area 需要的空間就越大,由於 Snapshot Standby 使用的是 Guarantee Restore Point ,所以當 Recovery Area 空間不足時就無法再進行任何操作了。



沒有留言:

張貼留言