測試 Oracle On NetApp (III)

然後我們到 O: 去把安裝資料庫的路徑改名稱 Oratest -> Oratest1 破壞原有的設定, 再把 U:Oratest (由 SnapShot 取出備份) 複製到 O:oratest 去. 這樣做的目的可以把剛剛做的 snapshot 的資料回覆回來, 並且確認資料庫是可以正常的開啟.

開啟時有時候會產生錯誤, 只要執行 Recover Database; 然後把資料庫的開啟狀況 alter database open; 開啟資料庫至可以存取的狀態. 檢查 snapshot 之後建立的 table 存不存在, select * from tabletest; 系統應該是會回覆不存在這個 table.

建議再資料複製完畢後, 立即把 U: (由 SnapShot 製作出來的 Disk 移除連結 (disconnect), 以防止該 snapshot 被佔用掉導致下次的 snapshot 不成功.
Test NetApp Picture

接下來再測試一下輸入剛剛的 Create table tabletest as (select * from all_tables); 建立一個測試的 table, 重複上列測試動作, 確認 snapshot 運作正常且 Oracle 可以正確的回覆, 資料不會丟失.

以上驗證看起來 SnapShot 是可以利用 Script 的設定達到備份的目的, 且只要安裝資料庫的主機是把必要的檔案如 Password file/UDump/DDump 等等的位置弄對, 可以很容易的再遠端把資料回覆.

接下來就是重頭戲, 測試 SnapMirror (複製異動資料到遠端的 NAS 上面去).
第一步就是在目的端設定一個 LUN 大小最少要跟 Source 端一樣大小, 設定部分請參考前述文章.

執行 SnapMirror 來設定兩端備援機制, 記得要連線到目的端主機做設定喔.
Test NetApp Picture

首先先指定 Destination 的 Vol & Qtree (path), 指定 Source 端的 Filer (就是來源端主機), Location 其 LUN 的路徑, Maximum Transfer Rate 可以指定最大可用頻寬, 來限制 NetApp 最大可使用同步的頻寬, 並設定每小時同步一次, 其實這邊在實務上應該設定不自動同步, 因為我們會利用 Script 來驅動 Oracle 做Begin / End Backup 的動作, 由 NetApp 主動去製作同步也沒有什麼意義, 因為有部分的資料還是存放在 Server 的 Memory 內, 沒有 Flush 出來到檔案還是會造成資料的部份 Lost.
Test NetApp Picture

最後一步就是在原有的 Script 加上強制同步的功能 (先在 LUN 上面做 SnapShot, 之後立即把資料同步到另外一台 NetApp主機上), 在 Backup.bat 加入下面這一行:

rsh %rm_ip% -l root:rootpassword snapmirror update -S %na_ip%:vol_Oracle %rm_name%:vol_oracle_DR

這樣在執行 Oracle 的線上備份程序後就立即的觸發 SnapMirror 的動作, 把剛剛備份下來熱騰騰的資料傳到另一台主機.

如果要由遠端主機做資料的回覆, 同樣的需要利用 iSCSI 連接到遠端的 LUN, 接下來同樣的可以選擇 Mount 最後備份的資料或是其中的一份 SnapShot 成為另外一個磁碟機, 把檔案複製到原始的 Oracle Data 路徑, 然後重啟 Oracle Database, 做必要的回覆就可以把資料救回來.

備註: 如果 Datafile 無法救到最新的這一份, 而 Archive Log 還保有比 Datafile 更新的資料, 可以由以下的兩個指令來 Apply archive log file 讓資料回覆到系統資料保存最後的一筆資料.

recover database using backup controlfile until cancel;

alter database open resetlogs;

發表迴響