孔 明 白 濤 辛 銳黃鏡宇楊 楠 張樹軍
(1.國網河北省電力公司信息通信分公司,河北 石家莊050011;2.中國石油華北油田公司第三采油廠,河北 河間062450)
隨著信息系統建設的快速發展,越來越多的數據被存儲下來,導致數據庫的規模不斷增加,單個表保存幾十億條數據的情況越來越多,數據庫的大小達到上TB的情況也屢見不鮮。隨著信息系統環境的變化,有時會將現有的數據庫從一種操作系統上遷移到另一種操作系統上,以實現硬件的升級,或者在其他操作系統上搭建測試環境,以滿足開發、測試分離的需要,這就遇到了一個棘手的問題,如何實現大數據庫的跨平臺遷移?
為了解決跨平臺遷移的問題,應用ORACLE數據庫,可以采用導入 導 出 工 具(exp/imp)、數 據 泵(expdp、impdp)、CTAS(create table as select)、GOLDENGATE等方式可以實現,但這些方法對于小規模數據庫來說比較合適,但對于數據量較大或數據庫對象較多的情況下,就不適用。針對大規模數據庫,ORACLE提供了另一種簡便方法,在操作系統的字節序一致的情況下,可以使用RMAN的convert database命令簡化遷移步驟,提高遷移速度,縮短生產服務器停機時間,提供高效的運維方法。
RMAN是ORACLE數據庫提供的一個備份恢復管理工具,不僅可以用于對數據庫進行備份或恢復等用途,同時為了滿足跨平臺遷移的需求,可以將數據文件內容進行轉換,以適應不同操作系統。尤其在字節序相同的前提下,可以對整個數據庫進行轉換,即convert database命令來實現跨平臺遷移。執行此命令需要將源數據庫置于read only狀態,然后通過RMAN的convert database命令將整個數據庫的數據文件復制一份,同時生成一個腳本文件和初始化參數文件,然后將這些文件復制到目標數據庫上(通常是另一種操作系統),最后執行此腳本文件完成整個轉換過程,將數據庫啟動起來。
RMAN的convert database命令特性有5個方面的特性:1)只傳輸數據表空間的數據文件,而 臨時表空間將不會被傳輸,如果臨時表空間是本地管理的話,那么傳輸數據庫完成后將會自動在目標數據庫創建臨時表空間;2)如源數據庫使用PFILE,那么PFILE也會被傳輸。如源數據庫使用的是SPFILE,將會自動產生一個PFILE進行傳輸,并在目標數據庫生SPFILE;3)控制文件和聯機日志文件將不會被傳輸。在目標數據庫open resetlogs的過程中,將會自動創建控制文件和聯機日志文件;4)BFILE、外部表和directory將不會被傳輸。RMAN檢查的時候將會把這些對象列出,用戶可以手工創建這些對象;5)密碼文件將不會被傳輸,用戶必須在目標數據庫手工創建密碼文件。
跨平臺整個遷移過程基本上分為:備份、恢復、轉換、重建控制文件四個階段。在做數據遷移之前,首先要進行遷移環境檢查,需要檢查操作系統類型,源庫和目標庫的版本及源庫和目標庫的字節序是否一致,以及傳輸通道是否通暢,這些條件都具備后就可以進行數據遷移。
在rman下進行備份:run {allocate channel t1 type disk;backup filesperset 4format’F: estxxzx_%t_%s_%p’full database;release channel t1;}
備份完成后,將備份片通過ftp或其他方式傳輸到目標數據庫服務器。
將備份片注冊后開始恢復控制文件和數據文件。恢復控制文件:run {allocate channel t1 type disk;restore controlfile from’/u01/oradata/XXXX;release channel t1;}
恢復數據文件: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 重建控制文件
通過修改備份出來的控制文件重建新的目標數據庫控制文件: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;
通過以上步驟實施后,就可以在目標服務器上,創建參數文件中使用到的目錄,然后執行trans.sql可以將數據庫打開。
跨平臺遷移的實現可以在字節序一致的前提下,通過ORACLE的RMAN工具可以簡便快捷的實現大規模數據庫在不同平臺間進行遷移,oracle目標端數據庫轉換數據文件方式不僅有效縮短了生產服務器的停機時間,同時提高轉換效率,為提高運維水平提供較為便捷的方法。
[1]OracleR○Database Backup and Recovery User’s Guide[Z].Part Number B28270-03.