周 芃 劉道踐*
ORACLE數(shù)據(jù)庫是主流數(shù)據(jù)庫產(chǎn)品之一,在“軍字一號”醫(yī)院信息系統(tǒng)中使用了這一數(shù)據(jù)庫平臺。醫(yī)院數(shù)據(jù)庫系統(tǒng)已成為支撐整個醫(yī)院良好運轉(zhuǎn)的主干和基礎(chǔ)[1]。在日常的數(shù)據(jù)庫維護工作中,通常需要建立一個和在線數(shù)據(jù)庫相同的數(shù)據(jù)庫,用于數(shù)據(jù)的統(tǒng)計、查詢、測試等任務(wù),稱之為副本數(shù)據(jù)庫。副本數(shù)據(jù)庫可以是原庫的全部也可以是部分,其主要目的是實現(xiàn)數(shù)據(jù)的復(fù)制。最常用的方法是硬拷貝或者是數(shù)據(jù)庫的導(dǎo)入、導(dǎo)出來實現(xiàn)。RMAN(恢復(fù)管理器)是ORACLE提供的一套用于備份和恢復(fù)的工具[2]。RMAN可對數(shù)據(jù)文件進行塊級的邏輯檢查和可用性檢查,支持并行備份和恢復(fù)[3]。使用ORACLE的RMAN DUPLICATE命令同樣可以完成這樣的工作,這種方式稱為克隆數(shù)據(jù)庫。
所謂克隆數(shù)據(jù)庫,就是在完成大量準(zhǔn)備工作的前提下,使用RMAN DUPLICATE命令實現(xiàn)數(shù)據(jù)庫的復(fù)制??寺】梢栽诒A裟繕?biāo)數(shù)據(jù)庫的基礎(chǔ)上依靠目標(biāo)數(shù)據(jù)庫(Target Database)的備份創(chuàng)建一個副本數(shù)據(jù)庫(Duplicate Database)。新創(chuàng)建的副本數(shù)據(jù)庫與目標(biāo)數(shù)據(jù)庫完全相同,或者僅包含目標(biāo)數(shù)據(jù)庫表空間的一部子集。目標(biāo)站點以及副本站點可在同一臺設(shè)備上,也可在不同的設(shè)備上,并可較穩(wěn)妥地保護在線數(shù)據(jù)庫。
在線數(shù)據(jù)庫通常處于7×24的工作狀態(tài),采用RMAN進行數(shù)據(jù)庫復(fù)制,避免了停機冷拷貝這種在線數(shù)據(jù)庫通常不允許的狀況,比起常用的邏輯導(dǎo)入導(dǎo)出的方式,避免了大文件跨平臺的數(shù)據(jù)拷貝。
RMAN克隆數(shù)據(jù)庫可以有多種方式來靈活決定克隆的內(nèi)容,Duplicate命令可在Catalog或Nocatalog模式下運行,重新命名副本庫中的數(shù)據(jù)文件??墒褂门渲妹钊ヌ^部分?jǐn)?shù)據(jù)文件和表空間,例如使用SKIP READONLY子句跳過只讀表空間,通過SKIP TABLESPACE子句跳過指定表空間。
進行數(shù)據(jù)庫克隆時,如果將最近的在線日志拷貝到到恢復(fù)目錄下,RMAN會進行自動恢復(fù)。如果沒有將最近的在線日志拷貝到到恢復(fù)目錄下,RMAN能取到目標(biāo)數(shù)據(jù)庫最近一次備份的數(shù)據(jù)恢復(fù)到副本數(shù)據(jù)庫。還原創(chuàng)建控制文件恢復(fù)OPEN RESETLOGS等操作都可在這個過程中自動完成。
首先要建立一個輔助數(shù)據(jù)庫,在克隆工作進行前必須在nomount狀態(tài)下通過rman同時連接到在線數(shù)據(jù)庫和輔助數(shù)據(jù)庫實例上。輔助數(shù)據(jù)庫通過會話通道和主庫相連接而獲取所需要的數(shù)據(jù),通過這樣的方式進行數(shù)據(jù)庫的復(fù)制和恢復(fù)。下面以WINDOWS環(huán)境為例。
使用ORAPWD命令創(chuàng)建輔助數(shù)據(jù)庫口令文件的基本格式:
此命令簡單、實用,是數(shù)據(jù)庫管理人員常用的。
在windows環(huán)境下使用ORACLE目錄下的ORADIM命令創(chuàng)建一個新的OracleService。通常使用的命令為:
D:oracle>oradim-new-sid sidname。
隨后用set oracle_sid=sidname命令設(shè)置到該實例上。完成后可登錄到該實例上。
此步驟主要是為了后面使用RMAN同時連接兩個實例做準(zhǔn)備。
輔助庫目錄是指輔助庫所必須的文件目錄,Rman在一個客戶端上可以同時連接到在線數(shù)據(jù)庫和輔助數(shù)據(jù)庫實例上,輔助數(shù)據(jù)庫需要能夠訪問所有的備份和歸檔文件,如果輔助數(shù)據(jù)庫和在線數(shù)據(jù)庫不在同一臺主機上,則需要在輔助庫上配置與主庫完全一致的路徑。在WINDOWS環(huán)境下可采用直接拷貝改名的方式操作。
為輔助庫創(chuàng)建初始化參數(shù)文件主要從在線庫中復(fù)制原有的初始化參數(shù)文件,并進行修改。其中某些參數(shù)需要注意:①DB_NAME,如果復(fù)制的數(shù)據(jù)在同一臺機器上,兩個實例的DB_NAME是不能一樣的;②DB_BLOCK_SIZE參數(shù),這個參數(shù)必須和主庫的設(shè)置相同。另外還有兩個很重要的參數(shù):①db_file_name_convert;②log_file_name_ convert。這兩個參數(shù)對于在不同目錄下實現(xiàn)數(shù)據(jù)庫克隆很重要,其實際意義是轉(zhuǎn)換主實例和輔助實例的目錄結(jié)構(gòu),是將原目錄路徑下的數(shù)據(jù)文件轉(zhuǎn)成為目標(biāo)路徑下。
初始化文件示例:
在完成以上工作后可以創(chuàng)建SPFILE參數(shù)文件。
由于輔助庫實例無創(chuàng)建控制文件,只能啟動到nomount模式。至于主庫,通常是處于打開的工作狀態(tài)。
首先設(shè)置實例為主庫。在windows環(huán)境下設(shè)置SID。
在完成上述工作后,RMAN會自動執(zhí)行還原恢復(fù)等操作。RMAN自動執(zhí)行的主要步驟為輔助數(shù)據(jù)庫創(chuàng)建控制文件,Restore 數(shù)據(jù)文件到輔助數(shù)據(jù)庫,并通過備份和日志進行不完全恢復(fù),重啟輔助實例通過Resetlogs方式打開副本數(shù)據(jù)庫并為副本數(shù)據(jù)庫產(chǎn)生新的DBID。至此,完成了整個使用RMAN進行數(shù)據(jù)庫的克隆。由于使用Resetlogs方式打開副本數(shù)據(jù)庫,要注意此時數(shù)據(jù)庫已經(jīng)處于一個新的Incarnation[4-10]。
⑴ORACLE數(shù)據(jù)庫提供了多種功能強大的數(shù)據(jù)復(fù)制功能,但針對具體應(yīng)用設(shè)計和實現(xiàn)數(shù)據(jù)庫系統(tǒng)的復(fù)制是非常復(fù)雜的,在實踐中必須要考慮數(shù)據(jù)的一致性、恢復(fù)的時間點、恢復(fù)的處理時間要求和平臺等問題。
⑵使用RMAN克隆數(shù)據(jù)庫中比較常遇到的問題是要注意在復(fù)制的數(shù)據(jù)目錄相同,另外就是注意配置輔助庫的監(jiān)聽,實踐中常常因為這個兩個問題無法完成克隆數(shù)據(jù)庫的過程。
綜上所述,RMAN提供的克隆數(shù)據(jù)庫技術(shù)非常強大,可以靈活決定克隆的內(nèi)容,可以轉(zhuǎn)換數(shù)據(jù)庫文件的名稱,是一種快速有效創(chuàng)建數(shù)據(jù)庫副本的技術(shù),在Duplicate 命令執(zhí)行后,副本數(shù)據(jù)庫還會自動完成數(shù)據(jù)庫恢復(fù)的工作[11-12]。對于數(shù)據(jù)庫維護工作中經(jīng)常需要快速安全的建立副本數(shù)據(jù)庫工作是一種快速、靈活、同時能兼顧穩(wěn)妥保護在線主庫的安全使用的有效技術(shù)。
[1]閆國濤,王穎,趙妍.醫(yī)院數(shù)據(jù)庫系統(tǒng)中RMAN備份與恢復(fù)的應(yīng)用[J].醫(yī)學(xué)信息,2010,23(5):26.
[2]蘇國磊.利用RMAN實現(xiàn)ORACLE數(shù)據(jù)庫的備份與恢復(fù)[J].電腦知識與技術(shù),2007(2):325-326.
[3]李帆,張文勝.基于HIS環(huán)境的ORACLE數(shù)據(jù)庫備份方案及實現(xiàn)[J].中國數(shù)字醫(yī)學(xué),2008,3(12):57-60.
[4]張自輝.ORACLE數(shù)據(jù)庫的備份方法和策略[J].吉首大學(xué)學(xué)報:自然科學(xué)版,2009,30(1):33-35.
[5]楊鐵林.Oracie 數(shù)據(jù)庫中Standby Database 的搭建和使用[J].計算機與現(xiàn)代化,2003(4):4-6.
[6]曹美琴.基于RMAN技術(shù)的ORACLE數(shù)據(jù)庫備份恢復(fù)研究[J].安徽大學(xué)學(xué)報:自然科學(xué)版,2007,31(2):25-28.
[7]袁姍,劉長生,施偉.Oracle數(shù)據(jù)庫熱備份過程中被中斷的數(shù)據(jù)恢復(fù)方法[J].電腦知識與技術(shù),2009(9):2315.
[8]王學(xué)海,劉德明.ORACLE數(shù)據(jù)庫的備份和斷點恢復(fù)[J].醫(yī)學(xué)信息,2008,21(5):596-597.
[9]段煉,張建鋼,范良志.基于Oracle 10 g RMAN的備份與恢復(fù)技術(shù)[J].湖南工程學(xué)院學(xué)報,2008,18(2):60-67.
[10]張冬,黃晶慧.Oracle數(shù)據(jù)庫恢復(fù)管理器研究及應(yīng)用[J].電腦知識與技術(shù),2007(21):659-662.
[11]滕永昌.Oracle數(shù)據(jù)庫系統(tǒng)管理[M].北京:清華大學(xué)出版社,2003.
[12]蓋國強.Oracle數(shù)據(jù)庫管理優(yōu)化與備份恢復(fù)[M].北京:人民郵電出版社,2007.