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