測試 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;

測試 Oracle On NetApp (II)

完成後顯示下列的總表
Test NetApp Picture

系統立即多出來個 50G 空間.
Test NetApp Picture

接下來應該在使用 Oracle dbca (Database Create assist) 建立一個測試的資料庫, 可以開立一個 DOS box 鍵入 dbca, 依照畫面的輸入,把資料庫建立起來, 安裝完成後進入資料庫確認執行正常喔.

註: 我原先已經在 O: 建立好資料庫了, 所以我把 O: 及 R: 對調並且把建立好的資料庫再複製回到 O: 上面, 所以現在開始資料庫是在放 O:, 且 O: 是存在於剛剛建立好的 iSCSI 上面.

由於是透過 LUN 來做的 iSCSI, NetApp無法提供定期性做 SnapShot (有的話也只是對著那個很大的檔案), 且自動 SnapShot 時也無法保證 Oracle DB 會把所有暫存在記憶體內的資料 Flush 到硬碟內, 所以必須透過幾個 Script file 去驅動 Oracle DB 執行 Log Switch 及 Begin Backup 指令, 把該寫的資料寫出到硬碟, 這樣做 SnapShot 才有意義.

接下來測試由廠商提供的 Scripts (加上自己環境的加工), 在 C: 建立一個 Script 的路徑, 把以下的內容 Key 進去.
Backup.bat
Set ORACLE_SID=ORATEST
SET NLS_LANG=AMERICAN_AMERICA.ZHT16MSWIN950
set na_ip=10.5.1.111
set rm_ip=10.5.1.111
set rm_name=FAS2020

rsh %na_ip% -l root:root123 snap delete -V vol1 old3
rsh %na_ip% -l root:root123 snap rename -V vol1 old2 old3
rsh %na_ip% -l root:root123 snap rename -V vol1 old1 old2
rsh %na_ip% -l root:root123 snap rename -V vol1 new old1
sqlplus /nolog @”C:/scripts/dobegin.sql”
rsh %na_ip% -l root:root123 snap create -V vol1 new
sqlplus /nolog @”C:/scripts/doend.sql”

dobegin.sql
connect sys/orc1@oratest as sysdba
SET FEEDBACK off
SET PAGESIZE 0
SPOOL C:/scripts/begin.sql
SELECT
‘ALTER TABLESPACE ‘ || tablespace_name || ‘ BEGIN BACKUP;’
FROM
dba_tablespaces where contents != ‘TEMPORARY’;
SPOOL off
alter system archive log current;
@C:/scripts/begin.sql
select status from vinstance;
EXIT

DOEND.SQL
connect sys/orc1@oratest as sysdba
SET FEEDBACK off
SET PAGESIZE 0
SPOOL C:/scripts/end.sql
SELECT
‘ALTER TABLESPACE ‘ || tablespace_name || ‘ END BACKUP;’
FROM
dba_tablespaces where contents != ‘TEMPORARY’;
SPOOL off
@C:/scripts/end.sql
EXIT

執行完後就可以在 SnapDrive 上面看到一個新的 SnapShot 叫 New, 每執行一次, 就會把 New 更名成 Old1, Old2, Old3 等等, 看看想要保留最後的幾份, 修改 Backup.bat 就可以了
Test NetApp Picture

要測試 SnapShot 是否完成, 新增幾筆資料到資料庫內, 我利用 Create table test as (select * from all_tables); 新增一個table, 確認資料該 Table 實際有資料後, 關閉資料庫, 把 New 這個 SnapShot 再 Connect 成另外一個 Disk.
選擇 SnapDrive 點選Disk, 移到右方選 Connect Disk
Test NetApp Picture

然後 Wizard 又跑出來, 選擇好 FAS2020主機, 選擇 Vol1 -> .snapshot -> New -> oratest, 可千萬不要選錯了喔..
Test NetApp Picture

注意要看到是 Disk snapshot 才是對的喔.. 點選 Next
Test NetApp Picture

給她一個磁碟代號, Next, 接下的動作跟建立一個新的 Disk 一樣, 一直 Next 到底就好.
Test NetApp Picture

最後還是出現一個彙總的資訊畫面, Next 就完成了.
Test NetApp Picture

電腦就多產生了一個 U: 出來, 其大小就是跟 O: 一樣的, 只差在資料.
Test NetApp Picture

測試 Oracle On NetApp (I)

由於公司是使用 Oracle 10g for Windows 當作主要的資料庫, 但 Oracle 10g 又不允許把資料庫掛在網路硬碟上面, 另一種解決方式就是利用 iSCSI 把網路分享的空間變成一個實體的硬碟.

先來驗證一下 LUN-> Manage 看看是否建立成功.
Test NetApp Picture

設定好的 LUN 已經安靜的躺在那邊.
Test NetApp Picture

接下來到 Windows Server 主機上作業, 首先要先安裝好 MS iSCSI initiator ,安裝好 Initiator, 系統會產生一組 Initiator Node Name (打開 MS iSCSI Initiator 的第一個畫面就有),
把這個 Node Name 加入到 NetApp 可以對應的 iSCSI 當中.
Test NetApp Picture

接著安裝 SnapDrive for Windows, 該軟體主要是可以直接把 iSCSI 綁到系統內, 並且可以手動來做 SnapShot. 安裝前必須要先安裝 .Net Framework 3.0 以及一些 Hotfixes, 但是需要 Download 這些 Hotfixes 需要另一番功夫, 進入到 Download 的畫面後, 微軟會要求你輸入你的 Email 位置, 然後 M$ 會把 Download 的 Link 以及 Zip 的密碼用 email 寄給你, 這樣才有辦法 Download 並解開.. 真是夠了..

安裝好之後會利用 M$ 的MMC (Microsoft Management Console) 的方式帶出 SnapDrive 的操作介面,
Test NetApp Picture

先 highlight Storage System Management , 選擇右鍵後點選 Add Storage System, 把 NetApp 主機的名稱 / IP 加到系統內.
Test NetApp Picture

接下來選擇主機->Disks, 在畫面右方選 Create Disk, 開始來連結 iSCSI Disk.
Test NetApp Picture

接著系統會彈出一個 Wizard 出來, 選擇好 NetApp 的主機, 選擇還有空間的 Volume, 輸入 LUN Name, 按 Next.
Test NetApp Picture

選擇獨佔(dedicated)模式, 之後下一步.
Test NetApp Picture

選擇需要連接上的 Drive, 及空間大小, 選擇 Next.
Test NetApp Picture

勾選 Initiator 後按 Next
Test NetApp Picture

預設值不變, 直接 Next
Test NetApp Picture

最後一步選擇 Finish 開始製作硬碟空間
Test NetApp Picture

建立 Partition, 並且幫你Format 到好喔.
Test NetApp Picture

Install Oracle on Fedora Core 9

最近有機會去重溫一下 Oracle 的簡易課程, 也學到了一些新的東西, 所以打算自己也架設個環境起來, 在上面操作上課用到的東西與測試一些其他功能.

由於 Oracle DB 大部分都是在 Unix-like 環境下執行比較多, 又考慮到以後可以分享給其他人使用, 所以打算在 VMWare 上面架設 Linux 主機加上 Oracle DB. 在嘗試了 RedHat 4 及 RedHat 5 兩種, DB 也 Download 了 10gR2, 11gR1, Express Edition 都很不順利, 一直找到了一篇有關於 Oracle 安裝的文章, 終於依照上面的步驟給他搞定.

以後會陸續補上 Oracle 的粗淺的心得.

安裝步驟說明