孔 明 白 濤 辛 銳黃鏡宇楊 楠 張樹軍
(1.國(guó)網(wǎng)河北省電力公司信息通信分公司,河北 石家莊050011;2.中國(guó)石油華北油田公司第三采油廠,河北 河間062450)
隨著信息系統(tǒng)建設(shè)的快速發(fā)展,越來越多的數(shù)據(jù)被存儲(chǔ)下來,導(dǎo)致數(shù)據(jù)庫(kù)的規(guī)模不斷增加,單個(gè)表保存幾十億條數(shù)據(jù)的情況越來越多,數(shù)據(jù)庫(kù)的大小達(dá)到上TB的情況也屢見不鮮。隨著信息系統(tǒng)環(huán)境的變化,有時(shí)會(huì)將現(xiàn)有的數(shù)據(jù)庫(kù)從一種操作系統(tǒng)上遷移到另一種操作系統(tǒng)上,以實(shí)現(xiàn)硬件的升級(jí),或者在其他操作系統(tǒng)上搭建測(cè)試環(huán)境,以滿足開發(fā)、測(cè)試分離的需要,這就遇到了一個(gè)棘手的問題,如何實(shí)現(xiàn)大數(shù)據(jù)庫(kù)的跨平臺(tái)遷移?
為了解決跨平臺(tái)遷移的問題,應(yīng)用ORACLE數(shù)據(jù)庫(kù),可以采用導(dǎo)入 導(dǎo) 出 工 具(exp/imp)、數(shù) 據(jù) 泵(expdp、impdp)、CTAS(create table as select)、GOLDENGATE等方式可以實(shí)現(xiàn),但這些方法對(duì)于小規(guī)模數(shù)據(jù)庫(kù)來說比較合適,但對(duì)于數(shù)據(jù)量較大或數(shù)據(jù)庫(kù)對(duì)象較多的情況下,就不適用。針對(duì)大規(guī)模數(shù)據(jù)庫(kù),ORACLE提供了另一種簡(jiǎn)便方法,在操作系統(tǒng)的字節(jié)序一致的情況下,可以使用RMAN的convert database命令簡(jiǎn)化遷移步驟,提高遷移速度,縮短生產(chǎn)服務(wù)器停機(jī)時(shí)間,提供高效的運(yùn)維方法。
RMAN是ORACLE數(shù)據(jù)庫(kù)提供的一個(gè)備份恢復(fù)管理工具,不僅可以用于對(duì)數(shù)據(jù)庫(kù)進(jìn)行備份或恢復(fù)等用途,同時(shí)為了滿足跨平臺(tái)遷移的需求,可以將數(shù)據(jù)文件內(nèi)容進(jìn)行轉(zhuǎn)換,以適應(yīng)不同操作系統(tǒng)。尤其在字節(jié)序相同的前提下,可以對(duì)整個(gè)數(shù)據(jù)庫(kù)進(jìn)行轉(zhuǎn)換,即convert database命令來實(shí)現(xiàn)跨平臺(tái)遷移。執(zhí)行此命令需要將源數(shù)據(jù)庫(kù)置于read only狀態(tài),然后通過RMAN的convert database命令將整個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)文件復(fù)制一份,同時(shí)生成一個(gè)腳本文件和初始化參數(shù)文件,然后將這些文件復(fù)制到目標(biāo)數(shù)據(jù)庫(kù)上(通常是另一種操作系統(tǒng)),最后執(zhí)行此腳本文件完成整個(gè)轉(zhuǎn)換過程,將數(shù)據(jù)庫(kù)啟動(dòng)起來。
RMAN的convert database命令特性有5個(gè)方面的特性:1)只傳輸數(shù)據(jù)表空間的數(shù)據(jù)文件,而 臨時(shí)表空間將不會(huì)被傳輸,如果臨時(shí)表空間是本地管理的話,那么傳輸數(shù)據(jù)庫(kù)完成后將會(huì)自動(dòng)在目標(biāo)數(shù)據(jù)庫(kù)創(chuàng)建臨時(shí)表空間;2)如源數(shù)據(jù)庫(kù)使用PFILE,那么PFILE也會(huì)被傳輸。如源數(shù)據(jù)庫(kù)使用的是SPFILE,將會(huì)自動(dòng)產(chǎn)生一個(gè)PFILE進(jìn)行傳輸,并在目標(biāo)數(shù)據(jù)庫(kù)生SPFILE;3)控制文件和聯(lián)機(jī)日志文件將不會(huì)被傳輸。在目標(biāo)數(shù)據(jù)庫(kù)open resetlogs的過程中,將會(huì)自動(dòng)創(chuàng)建控制文件和聯(lián)機(jī)日志文件;4)BFILE、外部表和directory將不會(huì)被傳輸。RMAN檢查的時(shí)候?qū)?huì)把這些對(duì)象列出,用戶可以手工創(chuàng)建這些對(duì)象;5)密碼文件將不會(huì)被傳輸,用戶必須在目標(biāo)數(shù)據(jù)庫(kù)手工創(chuàng)建密碼文件。
跨平臺(tái)整個(gè)遷移過程基本上分為:備份、恢復(fù)、轉(zhuǎn)換、重建控制文件四個(gè)階段。在做數(shù)據(jù)遷移之前,首先要進(jìn)行遷移環(huán)境檢查,需要檢查操作系統(tǒng)類型,源庫(kù)和目標(biāo)庫(kù)的版本及源庫(kù)和目標(biāo)庫(kù)的字節(jié)序是否一致,以及傳輸通道是否通暢,這些條件都具備后就可以進(jìn)行數(shù)據(jù)遷移。
在rman下進(jìn)行備份:run {allocate channel t1 type disk;backup filesperset 4format’F: estxxzx_%t_%s_%p’full database;release channel t1;}
備份完成后,將備份片通過ftp或其他方式傳輸?shù)侥繕?biāo)數(shù)據(jù)庫(kù)服務(wù)器。
將備份片注冊(cè)后開始恢復(fù)控制文件和數(shù)據(jù)文件。恢復(fù)控制文件:run {allocate channel t1 type disk;restore controlfile from’/u01/oradata/XXXX;release channel t1;}
恢復(fù)數(shù)據(jù)文件:run {allocate channel t1 type disk;set newname for datafile 1 to’/u01/oradata/NEW/SYSTEM01.DBF’;……restore database;switch datafile all;release channel t1;}
RUN {CONVERT DATAFILE’/u01/oradata/NEW/UNDOTBS01.DBF’FROM PLATFORM’Microsoft Windows x86 64-bit’ FORMAT’/u01/oradata/xtgd/UNDOTBS01.DBF’;……}3.4 重建控制文件
通過修改備份出來的控制文件重建新的目標(biāo)數(shù)據(jù)庫(kù)控制文件:Alert database backup controlfile to trace as‘/u01/oradata/NEW/control.bak’;
修改后:CREATE CONTROLFILE REUSE DATABASE"XTGD"RESETLOGS NOARCHIVELOG;MAXLOGFILES 16;MAXLOGMEMBERS 3;MAXDATAFILES 100;MAXINSTANCES 8;MAXLOGHISTORY 292;LOGFILE
GROUP 1’/u01/oradata/xtgd/REDO01.LOG’SIZE 50M;GROUP 2’/u01/oradata/xtgd/REDO02.LOG’ SIZE 50M;GROUP 3’/u01/oradata/xtgd/REDO03.LOG’ SIZE 50M ;DATAFILE ’/u01/oradata/xtgd/SYSTEM01.DBF’,……CHARACTER SET ZHS16GBK;
通過以上步驟實(shí)施后,就可以在目標(biāo)服務(wù)器上,創(chuàng)建參數(shù)文件中使用到的目錄,然后執(zhí)行trans.sql可以將數(shù)據(jù)庫(kù)打開。
跨平臺(tái)遷移的實(shí)現(xiàn)可以在字節(jié)序一致的前提下,通過ORACLE的RMAN工具可以簡(jiǎn)便快捷的實(shí)現(xiàn)大規(guī)模數(shù)據(jù)庫(kù)在不同平臺(tái)間進(jìn)行遷移,oracle目標(biāo)端數(shù)據(jù)庫(kù)轉(zhuǎn)換數(shù)據(jù)文件方式不僅有效縮短了生產(chǎn)服務(wù)器的停機(jī)時(shí)間,同時(shí)提高轉(zhuǎn)換效率,為提高運(yùn)維水平提供較為便捷的方法。
[1]OracleR○Database Backup and Recovery User’s Guide[Z].Part Number B28270-03.