專利名稱::一種數據庫恢復的方法和系統的制作方法
技術領域:
:本發(fā)明涉及數據處理
技術領域:
,更具體地說,涉及一種數據庫恢復的方法和系統。
背景技術:
:數據庫是按照數據結構來組織、存儲和管理數據的倉庫,使得可以利用計算機實現生產數據的自動化管理,因此,數據庫已廣泛應用于各企業(yè)中的各個部門中的生產管理。在現有的諸多數據庫應用系統中,某些情形下,某個網絡內的數據庫出現錯誤后,需要另外網絡用戶提供該正確數據庫壓縮文件,對當前出現問題的數據庫進行跨網恢復,例如A分公司把oracle數據庫壓縮文件跨網絡上傳到所屬B總部oracle數據庫服務器上,B總部oracle數據庫服務器根據該壓縮文件自動完成恢復過程。在A分公司實施與oracle數據庫相關的操作中,需要有專人負責完成與oracle數據庫處理相關的工作,如手工備份oracle數據庫、上傳oracle數據庫壓縮文件;通知B總部下載oracle數據庫壓縮文件、解壓縮oracle數據庫、導入oracle數據庫文件等。當oracle數據庫壓縮文件在跨網絡恢復的過程存在非操作問題的錯誤,例如oracle數據庫壓縮文件壓縮有錯誤導致不能正常解壓縮、oracle數據庫備份有錯誤導致不能正常恢復完整等情況。此時,B總部負責這項工作的人員必須通過電話、郵件等溝通方式通知A分公司的oracle數據庫的相關人員,讓他們重新上傳一個正確的oracle數據庫文件,然后再把壓縮后的oracle數據庫文件重新上傳到B總部的FTP(FileTransferProtocol,文件傳輸協議)服務器,然后,通知B總部負責oracle數據庫恢復的人員啟動恢復操作。此時,B總部的人員需要從FTP服務器上成功下載oracle數據庫壓縮文件、解壓縮oracle數據庫壓縮文件、收集導入oracle數據庫所需要的相關信息(如表空間名、備份方式、導出時的用戶名等)、利用數據庫恢復腳本執(zhí)行數據庫恢復任務、關注導入oracle數據庫過程、查看導入日志、確認導入成功與否成功等。由此可見,現有技術中需要B總部分配人力資源來進行手工下載、解壓、恢復oracle數據庫壓縮文件、以及與A分公司進行溝通等所有操作。整個流程中如果一個環(huán)節(jié)出現錯誤,則需要重新開始,導入過程中B總部還要關注導入日志來確認恢復成功與否。一般來說,整個恢復過程需要花費很多時間,當需要恢復的oracle數據庫多了,B總部從事oracle數據庫恢復的人員難以并行完成對多個oracle數據庫的恢復。
發(fā)明內容有鑒于此,本發(fā)明提供一種數據庫恢復的方法和系統,能夠實現數據庫恢復的自動化處理過程,從而提高數據庫恢復的效率。本發(fā)明實施例是這樣實現的—種數據庫恢復的方法,所述方法包括接收參數信息,所述參數信息與恢復當前數據庫相關;根據所述參數信息,下載當前數據庫備份文件的壓縮文件;解壓縮所述壓縮文件,獲得當前數據庫的備份文件;利用所述備份文件和參數信息恢復當前數據庫。優(yōu)選的,所述利用所述備份文件和參數信息恢復當前數據庫,包括根據所述參數信息,生成數據庫導入指令信息;根據所述導入指令信息,執(zhí)行由配置參數和導入指令信息生成的數據庫導入腳本,實現利用所述備份文件和參數信息恢復當前數據庫。優(yōu)選的,所述方法還包括生成表示本次數據庫恢復成功與否的日志文件,并將所述日志文件進行顯示。優(yōu)選的,所述方法還包括檢測是否存在足夠的硬盤空間以存儲所述備份文件,如果是,則反饋檢測成功信息;如果否,則反饋本次數據庫恢復失敗信息,并可選擇其它服務器進行恢復。優(yōu)選的,所述下載當前數據庫備份文件的壓縮文件,通過以下方式實現通過讀取字節(jié)輸入流中對應字節(jié)的緩沖數組的數據,并將所述緩沖數組的數據寫入字節(jié)輸出流,實現下載當前數據庫備份文件的壓縮文件。優(yōu)選的,所述解壓縮所述壓縮文件,包括通過遞歸查找算法,將所述壓縮文件內的所有文件進行解壓縮處理,并將所述所有文件移動至指定位置?!N數據庫恢復系統,所述系統包括客戶端和服務器端;其中,所述服務器端包括接收模塊,用于接收參數信息,所述參數信息與恢復當前數據庫相關;下載模塊,用于根據所述參數信息,下載當前數據庫備份文件的壓縮文件;解壓縮模塊,用于解壓縮所述壓縮文件,獲得當前數據庫的備份文件;恢復執(zhí)行模塊,用于利用所述備份文件恢復當前數據庫。優(yōu)選的,所述恢復執(zhí)行模塊包括導入指令信息生成子模塊,用于根據所述參數信息,生成數據庫導入指令信息;導入腳本執(zhí)行子模塊,用于根據所述導入指令信息,執(zhí)行由配置參數和導入指令信息生成的數據庫導入腳本,實現利用所述備份文件和參數信息恢復當前數據庫。優(yōu)選的,所述服務器端還包括日志文件生成模塊,用于生成表示本次數據庫恢復成功與否的日志文件;日志文件顯示模塊,用于將所述日志文件進行顯示。優(yōu)選的,所述服務器端還包括檢測模塊,用于檢測是否存在足夠的硬盤空間以存儲所述備份文件。如果是,則反饋檢測成功信息;如果否,則反饋本次數據庫恢復失敗信息,并可選擇其它服務器進行恢復。優(yōu)選的,所述下載模塊包括讀取子模塊,用于讀取字節(jié)輸入流中對應字節(jié)的緩沖數組的數據;寫入子模塊,用于將所述緩沖數組的數據寫入字節(jié)輸出流,實現下載當前數據庫備份文件的壓縮文件。優(yōu)選的,所述解壓縮模塊包括遞歸查找算法子模塊,用于通過遞歸查找算法,將所述壓縮文件內的所有文件進行解壓縮處理;移動模塊,用于將所述所有文件移動至指定位置。對現有技術相比,本發(fā)明實施例提供的技術方案具有以下優(yōu)點和特點由于能夠針對每個客戶端的數據庫恢復需求,自動建立對應的服務器線程執(zhí)行相應數據庫的恢復,每個服務線程會根據任務步驟執(zhí)行情況自動決定是否繼續(xù)執(zhí)行后續(xù)任務步驟,因此,能夠實現數據庫恢復的自動化處理過程。并且,由于服務器線程與客戶端相對應,能夠同時滿足多個數據庫的恢復,從而實現多個數據庫恢復操作的并行化處理;此外,由于客戶端能夠通過日志文件獲知本次數據庫恢復成功與否,且當本次數據庫恢復失敗后,分析判斷問題出現的環(huán)節(jié),因而能夠減少雙方的溝通時間,節(jié)約成本,提高數據庫恢復的效率。為了更清楚地說明本發(fā)明實施例或現有技術中的技術方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。圖1是本發(fā)明一種數據庫恢復的方法步驟流程圖;圖2是本發(fā)明服務器端的工作原理流程示意圖;圖3是本發(fā)明對應服務器端的服務線程工作原理流程示意圖;圖4是本發(fā)明一種數據庫恢復系統的結構示意圖;圖5是本發(fā)明另一種數據庫恢復系統的結構示意圖;圖6是本發(fā)明又一種數據庫恢復系統的結構示意圖。具體實施例方式本發(fā)明可以應用于基于數據庫實現的系統或軟件中,數據庫是依照某種數據模型組織起來并存放二級存儲器中的數據集合。這種數據集合具有如下特點盡可能不重復,以最優(yōu)方式為某個特定組織的多種應用服務,其數據結構獨立于使用它的應用程序,對數據的增、刪、改和檢索由統一軟件進行管理和控制。為了使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述。本發(fā)明提供一種數據庫恢復的方法,如圖1所示,所述方法包括以下步驟步驟101、接收參數信息,所述參數信息與恢復當前數據庫相關;步驟102、根據所述參數信息,下載當前數據庫備份文件的壓縮文件;步驟103、解壓縮所述壓縮文件,獲得當前數據庫的備份文件;步驟104、利用所述備份文件和參數信息恢復當前數據庫。本發(fā)明實施例中,與恢復當前數據庫相關的參數信息具體包括數據庫導出時的用戶名、表空間名、數據庫備份方式及壓縮文件要上傳的地址等信息,其中,所述地址信息包括FTP地址或服務器端地址。這些參數信息通??梢酝ㄟ^一軟件交互界面,采用客戶端人工設置的方式實現。服務器端能夠根據具體的參數信息,自動獲取與當前數據庫相關的備份文件的壓縮文件,進而進行下載、解壓縮處理。通過本發(fā)明,由于能夠針對每個客戶端的數據庫恢復需求,自動建立對應的服務器線程執(zhí)行相應數據庫的恢復,因此,能夠實現數據庫恢復的自動化處理過程。并且,由于服務器線程與客戶端相對應,能夠同時滿足多個數據庫的恢復,從而實現多個數據庫恢復操作的并行,提高數據庫恢復的效率。為了便于客戶端實時了解本次數據庫恢復的進程,可以根據服務器端實時生成恢復進程中各步驟環(huán)節(jié)的日志文件,并將該日志文件反饋至客戶端,客戶端能夠通過日志文件獲知本次數據庫恢復成功與否,且當本次數據庫恢復失敗后,分析判斷問題出現的環(huán)節(jié),因而能夠減少雙方的溝通時間,節(jié)約成本。為了便于本領域技術人員對本發(fā)明技術方案的理解,下面結合一個具體實施例進行詳細描述。該實施例以Oracle數據庫為例,以Java語言實現,可以運行在各種平臺。參照圖2,示出了服務器端的工作原理流程示意圖。服務器端的工作原理包括步驟201、運行服務器端后,啟動服務器系統的網絡服務;例如Windows系統的網絡服務:server禾口workstation,以便會g夠訪問LAN上白勺資源。以下為實現啟動操作系統的網絡服務的示例語句@echo〃啟動網絡月艮務server禾口workstation"netstart"server"netstart"workstation"步驟202、創(chuàng)建服務端Socket連接,并綁定服務端口(默認5678);步驟203、加入服務器關閉鉤子,以處理由于用戶誤操作導致關閉服務器;步驟204207、進入循環(huán),并監(jiān)聽服務端口,一旦有客戶端的連接請求,就創(chuàng)建一個服務線程,并將這個客戶端的任何請求交由該服務線程處理;步驟208212、判斷是否有用戶關閉服務器,如果發(fā)現存在用戶關閉服務器,則觸發(fā)關閉鉤子;這種情況發(fā)生時,服務器會判斷是否還有客戶端連接,如果有的話,提示類似"還有客戶端的連接,請不要關閉服務器"的提示信息;如果用戶選擇取消強制關閉,則服務器繼續(xù)循環(huán)監(jiān)聽服務端口,以便處理客戶端的連接請求;步驟213、如果客戶選擇強制關閉,則退出循環(huán),并關閉服務器。如果關閉服務器時,當前沒有客戶端連接,則直接退出循環(huán),關閉服務器。當有客戶端連接請求時,服務器創(chuàng)建一個服務線程來為客戶端處理所有的任務請求,如圖3所示,為具體的服務線程工作原理流程示意圖,包括步驟301、初始化服務線程保持與客戶端的連接,存儲客戶端IP,用來記錄反饋服務器日志時的客戶端IP,讀取服務器的配置文件,初始化所有數據庫腳本文件,為后面的數據庫導入作好準備;步驟302、進行客戶端連接數計數,以便可以根據配置參數來決定是否客戶端連接數超過限制數目;并且,取得Socket連接的輸入輸出流,為后面與客戶端進行數據通信做準備;步驟303、判斷當前客戶端連接數是否超過限制數目,如果是,直接退出服務線程,結束與客戶端的連接,這樣超限后,新的客戶端連接請求就會被拒絕;步驟304、如果當前客戶端連接數尚未超過限制數目,將計時器清0,開始對連接空閑時間計時;步驟305307、進入循環(huán),判斷連接空閑時間是否超時了,如果超時,說明客戶端已經因某些原因非正常斷開連接了,這時直接退出循環(huán)(步驟ll)并結束服務線程;否則從Socket輸入流中讀取客戶端發(fā)送的指令,并將空閑超時計時器清零;步驟308309、判斷客戶端指令是否為斷開連接指令,如果是,則直接退出循環(huán)(步驟11)并結束服務線程;否則將根據指令內容調用相關的指令處理器;步驟310、指令處理器執(zhí)行相應的任務,并將結果返回至客戶端;之后,繼續(xù)執(zhí)行步驟306;步驟311312、退出循環(huán),關閉輸入輸出流和Socket連接,將當前客戶端連接計數減1。其中,上述本發(fā)明實施例中相關的各個指令處理器的處理操作及其對應的指令功能和軟件指令形式如下表所示<table>tableseeoriginaldocumentpage8</column></row><table><table>tableseeoriginaldocumentpage9</column></row><table><table>tableseeoriginaldocumentpage10</column></row><table>需要說明的是,對于Java語言,通過打印相關操作系統命令來獲得可用磁盤空間大小的。例如,對于Windows系統,打印dir命令,通過該dir命令返回信息中的可用磁盤空間字符得到磁盤空間大??;對于非Windows系統,打印df命令,通過該df命令返回信息中的可用磁盤空間字符得到磁盤空間大??;具體實現如下先通過System.getProperty(〃os.謹e〃)獲得操作系統類型,通過Process對象執(zhí)行顯示磁盤空間信息的命令,如dirpath或df/path,接著打開新進程的輸入流,開始讀取命令執(zhí)行的返回信息,直到獲得可用磁盤空間大小的信息,關閉輸入流,返回可用磁盤空間大小。此外,本發(fā)明實施例中,客戶端與服務器的通信具有以下三種通信方式(1)服務器通過字符輸入流BufferedInputStream讀取客戶端的指令,并通過字符打印流PrintWriter向客戶端輸出指令執(zhí)行結果;(2)服務器通過對象輸入流ObjectInputStream讀取客戶端的參數集(HashM即對象),通過對象輸出流ObjectOutputStream向客戶端發(fā)送服務器參數集(HashMap對象);(3)服務器通過字節(jié)輸入流InputStream讀取客戶端發(fā)送過來的文件字節(jié)數據,從而完成文件傳遞功能,通過字節(jié)輸出流向客戶端發(fā)送日志文件字節(jié)數據,從而實現導入日志獲得功能。在下載Oracle數據庫備份文件時,首先打開本地文件上的一個文件輸出流,接著從Socket輸入流讀取一個字節(jié)緩沖數組的數據,并將該數據寫到文件輸出流中;如果是客戶端直接向服務器傳遞文件,則接著向客戶端發(fā)送"next"指令,表示讓客戶端繼續(xù)發(fā)送下一個字節(jié)數組數據下來,以便讓客戶端的發(fā)送與服務器的接收同步。累計已接收字節(jié)數,對比要下載或傳遞的整個文件的大小,如果已接收字節(jié)數等于文件總大小,則表示當前下載完成,這時結束對輸入流和輸出流的讀寫操作。相關執(zhí)行下載文件的示例語句如下所示intreadN咖=_1;intwriteN咖=0;〃bis是Socket連接的BufferedlnputStream,fos是FileOutputStream,〃out是Socket連接的PrintWriter〃dbSize是要傳遞的文件的總大小while((readN咖=bis.read(buf))>0){fos.write(buf,0,readN咖);fos.flush();out.println("next");out.flush();writeNum+=readN咖;if(writeNum>=dbSize)break;}由于TCP/IP連接是有限資源,如果服務器與客戶端之間的連接有一段時間沒有任何信號傳遞的話,已有的連接就會自動失效斷開,所以在服務器端,每當服務線程要花長時間處理任務時,就必須在開始處理任務之前,啟動另外一個線程,該線程負責使用當前的連接向客戶端發(fā)送一個信號,從而達到保持連接長久有效的作用,而客戶端收到該保持連接信號時,即可知道服務器正在某項任務的處理之中。同時,也可以在客戶端交互界面上顯示當前任務處理中的相關信息。此外,客戶端按照執(zhí)行步驟分別向服務器發(fā)送指令,而服務器完成每個步驟的處理任務后,還需要繼續(xù)使用輸入輸出流進行后續(xù)任務的處理,所以Socket連接的輸入輸出流在每個任務處理過程中都不能關閉,否則會將當前Socket連接斷開,后續(xù)任務處理步驟將無法進行,即Sokcet連接的輸入輸出流只有在服務線程最后結束之前關閉。在服務器端對已下載的壓縮文件進行解壓縮處理時,可以支持多種壓縮情況單個文件簡單壓縮、多個文件簡單壓縮、多次壓縮、分巻壓縮及壓縮包里有多層目錄等復雜情況。本發(fā)明實施例中,通過遞歸查找算法將多次壓縮和多層目錄中的最終數據庫備份文件解壓縮出來。解壓縮的功能是通過調用7z.exe工具來完成的,該工具為具有非常高的壓縮比和解壓縮效率的軟件。通過Process對象調用7z命令,并將需要解壓縮的文件作為參數傳遞給該Process對象,然后打開新進程的輸入流,檢查解壓縮過程打印出來的返回信息,如果檢查到有成功標志,則表示已經解壓縮成功了,否則解壓縮失敗。由于解壓縮出來的文件可能仍然是壓縮文件,所以需要采用遞歸算法來作解壓縮操作,直到解壓縮出所有的文件。而解壓縮出最終文件后,這些最終文件可能存在復雜的目錄結構,因此,需要采用搜索移動算法將最終的數據庫備份文件查找出來,并移動到指定位置。所述解壓縮遞歸算法的工作原理現簡單描述如下首先解壓縮單個文件;判斷解壓縮是否成功,如果成功,則繼續(xù)判斷解壓縮出來的文件是否還存在壓縮文件,如果不是,則直接返回;否則再判斷是否只有一個壓縮文件,如果是,再將這個壓縮文件作為參數調用自身;如果是多個壓縮文件,則判斷是否是分巻壓縮,如果是,則將第一個分巻壓縮包作為參數調用自身;如果不是分巻壓縮,則通過循環(huán),將每個壓縮文件作為參數調用自身,直至將壓縮文件內的所有文件執(zhí)行解壓縮處理。所述搜索移動算法的工作原理現簡單描述如下在傳入的目錄中搜索所有子目錄,對于每個子目錄,將子目錄的所有文件向上移動到根目錄,并以子目錄為參數據調用自身。得到最終結果,即所有文件都上移到根目錄中來后,再搜索所有DMP文件,如果只有一個DMP文件,則重命名并移動到指定位置;如果有多個DMP文件,則更新導入命令和參數,為后續(xù)導入命令準備。所述數據庫導入的功能實現是根據收集到的參數,組成導入命令,調用在服務器初始化過程中初始化了的數據庫腳本,并將相關參數傳遞給該數據庫腳本,通過Process對象創(chuàng)建新進程來執(zhí)行數據庫導入進程,當導入進程結束后,檢查導入日志,查找是否存在失敗標志或成功標志,從而判斷當前數據庫導入成功與否。通過Process對象調用數據庫腳本時,由于有的腳本是由多條外部命令組成的,所以必須以下面的形式來調用,否則無法執(zhí)行腳本中的第二條外部命令Processp=Runtime.getR皿time().exec("cmd.exe/Cstart腳本文件名");I即utStre咖in=p.getI即utStre咖();intc;while((c=in.read())!=_1){//System,out.print(c);需要說明的是,如果不采用cmd.exe/Cstart來調用腳本的話,那當腳本中的第一條外部命令執(zhí)行完之后,腳本的執(zhí)行就暫停了,而Process對象也在等待腳本進程的執(zhí)行結束;如果Process對象啟動的新進程會向標準輸出設備輸出信息,最好是將這些輸出信息通過InputStream讀取過來,否則也很有可能會導致Process與新進程都處理于暫停狀態(tài)。此外,客戶端的工作原理圖如下客戶端是一個基于JavaSwing的用戶圖形界面GUI程序,GUI收集用戶輸入的參數信息,并根據具體參數信息響應用戶的操作,然后獲得一個客戶端服務實例,這個客戶端服務實例是一個單例對象,以線程方式運行,從而GUI界面可以實時更新信息以反饋服務器端的任務處理情況。相關軟件示例語句如下所示in.close0;p.waitFor();:0127]:0128]:0129]:0130]:0131]:0132]:0133]:0134]:0135]:0136]:0137]:0138]:0139]publicclassDBAutoClientService{〃執(zhí)行線程,根據任務類型來執(zhí)行不同的任務classExecThreadextendsThread{privateintjobType;if(this.jobType==■exec_restore();elseif(this.jobTypeexec_del();JobType.RESTORE—JOB)JobType.DELETE—JOB):0140]}:0141]privatestaticDBAutoClientServiceinstance=null;//單例模式:0142]privateExecThreadexecThread=皿ll5:0143]privateDBAutoClientService()H:0144]publicstaticDBAutoClientServicegetlnstance(){:0145]if(instance==null):0146]instance=newDBAutoClientService();:0147]returninstance5:0148]}:0149]publicvoidstart(intjobType){:0150]net0ptState=NetOptState.NET_0PT_NONE;:0151]lastErrState=NetOptErr.NET_0PT_N0_ERR;.0152]execThread=newExecThread();.0153]execThread.setJobType(jobType);:0154]execThread.start0;:0155]}:0156]}:0157]客戶端GUI響應用戶的操作,獲得客戶端服務實例,客戶端服務實例將GUI上的用戶輸入作為指令的參數發(fā)送給服務器,等待服務器處理指令對應的任務并返回結果,根據返回結果,更新GUI的狀態(tài)DBAutoClientServiceclient=DBAutoClientService.getlnstance();if(datacenterRestorelnfo==nul1)datacenterRestorelnfo=newHashMap();〃將GUI的用戶輸入存儲到datacenterRestoreInfo,〃這是一個用來保存參數的HashMap對象…client.setClientWin(this);…client,start(DBAutoClientService.JobType.REST0RE_J0B);可見,通過本發(fā)明,由于能夠針對每個客戶端的數據庫恢復需求,自動建立對應的服務器線程執(zhí)行相應數據庫的恢復,因此,能夠實現數據庫恢復的自動化處理過程。并且,由于服務器線程與客戶端相對應,能夠同時滿足多個數據庫的恢復,從而實現多個數據庫恢復操作的并行,提高數據庫恢復的效率。對于前述的方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發(fā)明并不受所描述的動作順序的限制,因為依據本發(fā)明,某些步驟可以采用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。本發(fā)明可用于眾多通用或專用的計算系統環(huán)境或配置中,例如個人計算機、服務器計算機、手持設備或便攜式設備、平板型設備、多處理器系統、包括以上任何系統或設備的分布式計算環(huán)境等等。本發(fā)明可以在由計算機執(zhí)行的計算機可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務或實現特定抽象數據類型的程序、對象、組件或數據結構等等,也可以在分布式計算環(huán)境中實踐本發(fā)明。在這些分布式計算環(huán)境中,由通過通信網絡而被連接的遠程處理設備來執(zhí)行任務。在分布式計算環(huán)境中,程序模塊可以位于包括存儲設備在內的本地和遠程計算機存儲介質中。相應上述數據庫恢復的方法,本發(fā)明還提供了一種數據庫恢復系統,參考圖4,示出了本發(fā)明一種數據庫恢復系統實施例的結構框圖,所述系統具體可以包括客戶端40和服務器端41;其中,所述服務器端41包括接收模塊410,用于接收參數信息,所述參數信息與恢復當前數據庫相關;下載模塊411,用于根據所述參數信息,下載當前數據庫備份文件的壓縮文件;解壓縮模塊412,用于解壓縮所述壓縮文件,獲得當前數據庫的備份文件;恢復執(zhí)行模塊413,用于利用所述備份文件恢復當前數據庫。在本發(fā)明的一個實施例中,如圖5所示,所述恢復執(zhí)行模塊413包括導入指令信息生成子模塊4130,用于根據所述參數信息,生成數據庫導入指令信息;導入腳本執(zhí)行子模塊4131,用于根據所述導入指令信息,執(zhí)行由配置參數和導入指令信息生成的數據庫導入腳本,實現利用所述備份文件和參數信息恢復當前數據庫。在本發(fā)明的另一個實施例中,如圖6所示,所述服務器端41還包括日志文件生成模塊414,用于生成表示本次數據庫恢復成功與否的日志文件;日志文件顯示模塊415,用于將所述日志文件進行顯示。優(yōu)選的,所述服務器端41還包括檢測模塊416,用于檢測是否存在足夠的硬盤空間以存儲所述備份文件,如果是,則反饋檢測成功信息;如果否,則反饋本次數據庫恢復失敗信息,并可選擇其它服務器進行恢復。進一步,所述下載模塊411具體包括讀取子模塊4110,用于讀取字節(jié)輸入流中對應字節(jié)的緩沖數組的數據;寫入子模塊4111,用于將所述緩沖數組的數據寫入字節(jié)輸出流,實現下載當前數據庫備份文件的壓縮文件。并且,所述解壓縮模塊412包括遞歸查找算法子模塊4121,用于通過遞歸查找算法,將所述壓縮文件內的所有文件進行解壓縮處理;移動子模塊4122,用于將所述所有文件移動至指定位置。對于系統實施例而言,由于其基本相應于方法實施例,所以描述的比較簡單,相應之處參見方法實施例的部分說明即可,本發(fā)明在此不再進行贅述。對所公開的實施例的上述說明,使本領域專業(yè)技術人員能夠實現或使用本發(fā)明。對這些實施例的多種修改對本領域的專業(yè)技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。權利要求一種數據庫恢復的方法,其特征在于,所述方法包括接收參數信息,所述參數信息與恢復當前數據庫相關;根據所述參數信息,下載當前數據庫備份文件的壓縮文件;解壓縮所述壓縮文件,獲得當前數據庫的備份文件;利用所述備份文件和參數信息恢復當前數據庫。2.根據權利要求1所述的數據庫恢復的方法,其特征在于,所述利用所述備份文件和參數信息恢復當前數據庫,包括根據所述參數信息,生成數據庫導入指令信息;根據所述導入指令信息,執(zhí)行由配置參數和導入指令信息生成的數據庫導入腳本,實現利用所述備份文件和參數信息恢復當前數據庫。3.根據權利要求1所述的數據庫恢復的方法,其特征在于,所述方法還包括生成表示本次數據庫恢復成功與否的日志文件,并將所述日志文件進行顯示。4.根據權利要求1所述的數據庫恢復的方法,其特征在于,所述方法還包括檢測是否存在足夠的硬盤空間以存儲所述備份文件,如果是,則反饋檢測成功信息;如果否,則反饋本次數據庫恢復失敗信息,并可選擇其它服務器進行恢復。5.根據權利要求1所述的數據庫恢復的方法,其特征在于,所述下載當前數據庫備份文件的壓縮文件,通過以下方式實現通過讀取字節(jié)輸入流中對應字節(jié)的緩沖數組的數據,并將所述緩沖數組的數據寫入字節(jié)輸出流,實現下載當前數據庫備份文件的壓縮文件。6.根據權利要求1-5中任一項所述的數據庫恢復的方法,其特征在于,所述解壓縮所述壓縮文件,包括通過遞歸查找算法,將所述壓縮文件內的所有文件進行解壓縮處理,并將所述所有文件移動至指定位置。7.—種數據庫恢復系統,其特征在于,所述系統包括客戶端和服務器端;其中,所述服務器端包括接收模塊,用于接收參數信息,所述參數信息與恢復當前數據庫相關;下載模塊,用于根據所述參數信息,下載當前數據庫備份文件的壓縮文件;解壓縮模塊,用于解壓縮所述壓縮文件,獲得當前數據庫的備份文件;恢復執(zhí)行模塊,用于利用所述備份文件恢復當前數據庫。8.根據權利要求7所述的數據庫恢復系統,其特征在于,所述恢復執(zhí)行模塊包括導入指令信息生成子模塊,用于根據所述參數信息,生成數據庫導入指令信息;導入腳本執(zhí)行子模塊,用于根據所述導入指令信息,執(zhí)行由配置參數和導入指令信息生成的數據庫導入腳本,實現利用所述備份文件和參數信息恢復當前數據庫。9.根據權利要求7所述的數據庫恢復系統,其特征在于,所述服務器端還包括日志文件生成模塊,用于生成表示本次數據庫恢復成功與否的日志文件;日志文件顯示模塊,用于將所述日志文件進行顯示。10.根據權利要求7所述的數據庫恢復系統,其特征在于,所述服務器端還包括檢測模塊,用于檢測是否存在足夠的硬盤空間以存儲所述備份文件。如果是,則反饋檢測成功信息;如果否,則反饋本次數據庫恢復失敗信息,并可選擇其它服務器進行恢復。11.根據權利要求7所述的數據庫恢復系統,其特征在于,所述下載模塊包括讀取子模塊,用于讀取字節(jié)輸入流中對應字節(jié)的緩沖數組的數據;寫入子模塊,用于將所述緩沖數組的數據寫入字節(jié)輸出流,實現下載當前數據庫備份文件的壓縮文件。12.根據權利要求7-11所述的數據庫恢復系統,其特征在于,所述解壓縮模塊包括遞歸查找算法子模塊,用于通過遞歸查找算法,將所述壓縮文件內的所有文件進行解壓縮處理;移動模塊,用于將所述所有文件移動至指定位置。全文摘要本發(fā)明公開了一種數據庫恢復的方法和系統,其中,所述方法包括接收參數信息,所述參數信息與恢復當前數據庫相關;根據所述參數信息,下載當前數據庫備份文件的壓縮文件;解壓縮所述壓縮文件,獲得當前數據庫的備份文件;利用所述備份文件和參數信息恢復當前數據庫。通過本發(fā)明,能夠實現數據庫恢復的自動化和并行化處理過程,從而提高數據庫恢復的效率。文檔編號G06F11/14GK101694637SQ20091021114公開日2010年4月14日申請日期2009年11月6日優(yōu)先權日2009年11月6日發(fā)明者郭錦生,黃銀闖申請人:金蝶軟件(中國)有限公司;