高旭 楊品媛 曹明
摘 要:為了實現不同平臺上的ORACLE數據庫遷移,可以采用導入導出工具、數據泵、CTAS、GOLDENGATE等方式。針對大規模數據庫,可以使用ORACLE的RMAN命令簡化遷移步驟,提高遷移速度。
關鍵詞:ORACLE數據庫;跨平臺遷移;RMAN;字節序
1 概述
針對大規模數據庫跨平臺遷移的問題,ORACLE提供了一種簡便方法,在操作系統的字節序一致的情況下,可以使用RMAN的convert database命令簡化遷移步驟,提高遷移速度。
2 跨平臺遷移場景分析
ORACLE數據庫支持的操作系統平臺種類較多,對于主流的操作系統上都提供了安裝軟件。常見的數據庫操作系統平臺有AIX、HP-UX、Linux等,遷移場景可能是將ORACLE數據庫從HP-UX上遷移到AIX平臺上,或者從AIX平臺上遷移到Linux平臺上。判斷ORACLE數據庫是否支持相應的操作系統可以通過查詢動態視圖 v$transportable_platform來確認。這里需要注意一個跨平臺遷移的重要影響因素:字節序,即ENDIAN_FORMAT列顯示的結果。
字節序:是指多字節數據在計算機內存中存儲或者網絡傳輸時各字節的存儲順序。常見的字節序有兩種:
①Little endian:將低序字節存儲在起始地址;
②Big endian:將高序字節存儲在起始地址。
查詢當前數據庫所在的操作系統平臺類型可以通過動態視圖 v$database 來確認:
SQL> select name,platform_id,platform_name from v$database;
進行跨平臺遷移如果字節序一致,即都為BIG或都為LITTLE,則可以直接使用RMAN的convert database方法遷移。
3 技術原理介紹
RMAN是ORACLE數據庫提供的一個備份恢復管理工具,此工具可以將數據文件內容進行轉換(不同的操作系統字節序可能不一樣,所以需要轉換)。ORACLE 10gR2以后的版本,在相同字節序的前提下,將源數據庫置于read only狀態,然后通過RMAN 的convert database命令將整個數據庫的數據文件按新字節序克隆一份,同時生成一個腳本文件和初始化參數文件,然后將這些文件復制到目標數據庫上,最后執行此腳本文件完成整個轉換過程。
4 跨平臺遷移步驟
4.1 進行轉換前檢查
檢查版本
select * from v$version;
需要檢查源庫和目標庫的版本,為了減少遷移的麻煩,最好軟件版本一致。
檢查支持的操作系統
select * from v$transportable_platform;
源庫和目標庫的字節序一致,則可以直接使用convert database進行準換。
檢查外部文件
使用DBMS_TDB.CHECK_EXTERNAL 檢查無法傳輸的。
Exec dbms_tdb.check_external
輸出的內容是無法完成轉換的,因此需要手工創建這些內容。
檢查是否有阻止傳輸的情況
Exec dbms_tdb.check_db('AIX-Based Systems (64-bit)',
dbms_tdb.skip_none);
如果沒有的話,不會有任何輸出。
4.2 將源庫置于只讀狀態
執行跨平臺遷移操作期間要求將數據庫置于只讀狀態,轉換完后才可以再置回讀寫狀態,因此此期間內數據庫只能查詢不能寫入,業務系統通常不能使用。命令如下:
shutdown immediate
startup open read only
4.3 執行轉換
使用rman工具進行轉換。
RMAN> convert database
transport script '/hp2aix/trans.sql'
to platform 'AIX-Based Systems (64-bit)'
format '/hp2aix/aix_%U';
此過程耗時長短由數據庫大小決定。執行此命令會將當前數據庫的所有數據文件復制一份到新目錄下,大小與源庫一樣。轉換完畢后,可以將源庫恢復到讀寫狀態。
4.4 傳輸到目標服務器上
將新目錄 /hp2aix/ 下的所有文件通過ftp、scp等方式復制到目標庫服務器上,通常如下:
scp /hp2aix/* db5:/newdb
如果數據文件較多,可以考慮開啟多個窗口同時傳輸,提高效率。
4.5 正常打開目標庫
在目標服務器上,首先需要創建參數文件中使用到的目錄,例如user_dump_dest等,然后執行trans.sql可以將數據庫打開。
當然,為了細調轉換內容,可以手工編輯此腳本,然后再執行。
5 關于提高性能
整個遷移過程基本上分為:轉換、傳輸、啟動三個階段,為了提高轉換性能,縮短停機時間窗口,可以考慮在轉換階段通過并行技術,提高轉換的速度。為了減少傳輸時間,可以將遠程目標端的存儲通過NFS方式掛載到源庫服務器上,這樣就直接生成到目標端了,不再需要傳輸時間了,當然,前提是優化網絡、NFS參數,保障足夠的網絡帶寬。啟動過程基本上沒有什么可以采用的優化手段,此時間也相對固定。
6 結束語
跨平臺遷移的實現可以采用多種技術,在字節序一致的前提下,通過ORACLE的RMAN工具可以簡便快捷的實現大規模數據庫在不同平臺間進行遷移,為提高轉換效率,增強運維水平提供了一種便捷方法。
參考文獻:
[1]Oracle [R] Database Backup and Recovery User′s Guide. ?Part Number B28270-03.
[2]Oracle [R] Database Backup and Recovery Advanced User′s Guide ?Part Number B14191-01.
[3]維基百科.字節序.