Oracle數(shù)據庫用的一致性數(shù)據保護與捕獲一致性狀態(tài)的方法【專利摘要】本發(fā)明涉及一種Oracle數(shù)據庫用的一致性數(shù)據保護與捕獲一致性狀態(tài)的方法,包括以下步驟:1)在CDP實時備份和存儲快照時,將數(shù)據從緩存中刷入磁盤,并將Oracle數(shù)據庫置為靜默狀態(tài),然后查詢一致性時間段并做時間點快照切割;2)在完成時間點快照切割之后,再將數(shù)據庫置為非靜默狀態(tài),恢復正常Oracle生產狀態(tài)。與現(xiàn)有技術相比,本發(fā)明可以在不影響用戶Oracle數(shù)據庫正常運行的前提下,保證CDP實時備份和存儲快照任意時間點都是滿足Oracle一致性的,都能成功恢復以達到業(yè)務連續(xù)且盡可能精確挽回數(shù)據丟失的目的;能有效降低用戶Oracle數(shù)據庫的運行風險,提升效率并減輕維護壓力?!緦@f明】OracIe數(shù)據庫用的一致性數(shù)據保護與捕獲一致性狀態(tài)的方法【
技術領域:
】[0001]本發(fā)明涉及一種Oracle數(shù)據庫維護技術,尤其是涉及一種Oracle數(shù)據庫用的一致性數(shù)據保護與捕獲一致性狀態(tài)的方法。【
背景技術:
】[0002]根據最具權威的IT研究與顧問咨詢公司Gartner公司公布的2012年全球關系型數(shù)據庫市場調查報告,以軟件總收入計算,Oracle以48.3%繼續(xù)占據著第一的位置,且收入份額大于四個最接近的競爭對手(SQLServer、Sybase、DB2、PostgreSQL)的總和。由此可看出作為數(shù)據庫之王的Oracle在全球的用戶仍然是最多的。[0003]Oracle數(shù)據庫存放于計算機的存儲設備中,絕大多數(shù)是存儲于硬盤中,少數(shù)存放在磁帶中。由于計算機本身的物理特性決定,保存在其上的數(shù)據會因為各種外部原因的沖擊而不可用。比如存儲設備的物理損壞和使用壽命、電力突然中斷、火災、地震等都可能導致存儲在計算機上的數(shù)據丟失,以致Oracle數(shù)據庫用戶的生產業(yè)務中斷,造成的損失無法估量。面對數(shù)據丟失導致業(yè)務中斷的挑戰(zhàn),合適且高效的Oracle數(shù)據保護技術是必不可少的。為了保證Oracle用戶數(shù)據持續(xù)可用,最好的辦法就是數(shù)據多機存儲,將Oracle中的數(shù)據高效、快速地備份到備份設備中形成多個數(shù)據副本,當出現(xiàn)生產業(yè)務中斷的時候,馬上對其恢復繼續(xù)生產。[0004]目前數(shù)據保護領域存在的Oracle數(shù)據保護方案主要分為服務器定時備份、服務器實時備份和存儲層的存儲快照備份這三種。這三種數(shù)據保護方案概念和原理如下:[0005](I).Oracle定時備份:利用Oracle提供的第三方備份恢復接口,設置計劃觸發(fā)做物理備份或者邏輯備份。[0006](2).Oracle服務器層CDP實時備份:利用磁盤1/0讀寫驅動監(jiān)控Oracle對應的數(shù)據文件、控制文件、日志文件的1/0讀寫情況,并將1/0請求包IRP打包發(fā)送到備份服務器中。[0007](3).Oracle存儲快照備份:利用磁盤存儲廠商提供的快照接口,對Oracle數(shù)據庫文件所在的卷volume對應的磁盤做快照備份。[0008]綜上所述,相比于Oracle的定時備份,⑶P實時備份為滿足用戶更短的RTO(災難恢復時間)和更小的RPO(災難數(shù)據丟失量)需求提供不間斷的持續(xù)數(shù)據保護;存儲快照作為存儲級的快照備份,備份時間相當短以秒為單位,縮小了備份窗口和減少了服務器層的資源開銷。已經成為數(shù)據保護領域新的發(fā)展趨勢。【
發(fā)明內容】[0009]本發(fā)明的目的就是為了克服上述現(xiàn)有技術存在的缺陷而提供一種Oracle數(shù)據庫用的一致性數(shù)據保護與捕獲一致性狀態(tài)的方法,通過oci連接到Oracle數(shù)據庫中,將buffercache中的數(shù)據寫入DISK中;然后將數(shù)據庫置為備份狀態(tài)對其進行凍結處理,使其處于靜默狀態(tài),此時對數(shù)據庫的v$backup視圖進行查詢,捕獲一致性狀態(tài);做完對應的Oracle數(shù)據保護之后再對其取消備份狀態(tài)進行解凍處理,恢復正常運行的生產狀態(tài);在觸發(fā)Oracle進行一致性數(shù)據保護的過程中,不影響用戶Oracle生產數(shù)據庫的正常運行。[0010]本發(fā)明的目的可以通過以下技術方案來實現(xiàn):[0011]一種Oracle數(shù)據庫用的一致性數(shù)據保護與捕獲一致性狀態(tài)的方法,其特征在于,包括以下步驟:[0012]1)在⑶P實時備份和存儲快照時,將數(shù)據從緩存中刷入磁盤,并將Oracle數(shù)據庫置為靜默狀態(tài),然后查詢一致性時間段并做時間點快照切割;[0013]2)在完成時間點快照切割之后,再將數(shù)據庫置為非靜默狀態(tài),恢復正常Oracle生產狀態(tài)。[0014]所述的步驟1)具體如下:[0015]11)捕獲CDP實時備份和存儲快照開始時的時間點;[0016]12)通過Oracle數(shù)據庫提供的OCI接口,連接到捕獲時間點的對應數(shù)據庫中;[0017]13)查詢Oracle數(shù)據庫的版本;[0018]14)判斷Oracle數(shù)據庫是否處于靜默狀態(tài),若為是,根據不同版本采用不同指令將Oracle數(shù)據庫解除靜默狀態(tài),并執(zhí)行步驟15),否則,直接執(zhí)行步驟15);[0019]15)將buffercache中的臟數(shù)據塊寫入到disk中,并執(zhí)行步驟16);[0020]16)將Oracle數(shù)據庫置為靜默狀態(tài),并執(zhí)行步驟17);[0021]17)查詢捕獲Oracle數(shù)據庫的一致性時間段,并做時間點快照切割;[0022]18)Oracle數(shù)據庫達到一致性之后,通過Oracle⑶P或者存儲快照模塊捕獲時間點做數(shù)據保護。[0023]所述的根據不同版本采用不同指令將Oracle數(shù)據庫解除靜默狀態(tài)具體為:[0024]對于0racle9i:執(zhí)行命令,'altertablespaceTOlendbackup;,';[0025]0raclel0g&lIg:執(zhí)行命令"alterdatabaseendbackup;,';[0026]即可將數(shù)據庫解除靜默狀態(tài)。[0027]所述的將Oracle數(shù)據庫置為靜默狀態(tài)具體為:[0028]對于0racle9i:依次執(zhí)行命令"altertablespaceTOlbeginbackup;altertablespaceT02beginbackup;",對Oracle附屬的各個表空間依次凍結,置為靜默狀態(tài);[0029]對于0raclel0g&lIg:執(zhí)行命令,'alterdatabasebeginbackup;,'對整個Oracle數(shù)據庫凍結,置為靜默狀態(tài)。[0030]所述的步驟2)具體為:[0031]21)0racle⑶P和存儲快照捕獲完時間點之后,開始執(zhí)行解除靜默狀態(tài);[0032]22)通過Oracle數(shù)據庫提供的OCI接口,連接到做時間點捕獲的對應數(shù)據庫中;[0033]23)查詢Oracle數(shù)據庫的版本;[0034]24)判斷Oracle是否處于靜默狀態(tài),若為是,根據不同版本對其進行靜默狀態(tài)解除,并執(zhí)行步驟25),否則直接執(zhí)行步驟25);[0035]25)校驗控制文件和各個數(shù)據文件頭的sen號,使各個文件的sen號都一致性,并將buffercache中的臟數(shù)據塊輸入到disk中去;[0036]26)0racle數(shù)據庫已經解除了靜默狀態(tài),將數(shù)據庫恢復成做一致性處理之前的生產狀態(tài)。[0037]所述的根據不同版本對其進行靜默狀態(tài)解除具體為:[0038]0racle9i:對數(shù)據文件對應的表空間執(zhí)行"altertablespaceTOlendbackup;"將表空間解除靜默狀態(tài);[0039]OraclelOg&lIg:在sqlplus中執(zhí)行命令"alterdatabaseendbackup;"將數(shù)據庫解除靜默狀態(tài)。[0040]與現(xiàn)有技術相比,本發(fā)明通過提供在⑶P實時備份和存儲快照將數(shù)據刷入磁盤,將Oracle數(shù)據庫處于靜默狀態(tài)、查詢一致性時間區(qū)間后,做時間點快照切割,產生完備份時間點之后再將Oracle數(shù)據庫解除靜默狀態(tài)恢復正常運行狀態(tài)的技術方案,可以在不影響用戶Oracle數(shù)據庫正常運行的前提下,保證CDP實時備份和存儲快照任意時間點都是滿足Oracle-致性的,都能成功恢復以達到業(yè)務連續(xù)且盡可能精確挽回數(shù)據丟失的目的;能有效降低用戶Oracle數(shù)據庫的運行風險,提升效率并減輕維護壓力?!緦@綀D】【附圖說明】[0041]圖1為Oracle寫數(shù)據原理流程圖;[0042]圖2為本發(fā)明處理Oracle-致性將數(shù)據庫置為靜默狀態(tài)具體流程圖;[0043]圖3為本發(fā)明再在完成時間點切割捕獲完之后再將數(shù)據庫置為非靜默狀態(tài)具體流程圖?!揪唧w實施方式】[0044]下面結合附圖和具體實施例對本發(fā)明進行詳細說明。[0045]實施例[0046]根據【
背景技術:
】中的介紹,作為數(shù)據保護領域新發(fā)展趨勢的CDP實時備份和存儲快照,日益受到用戶的歡迎。[0047]但是在Oracle數(shù)據庫中寫日志和寫數(shù)據文件是消耗I/O最大的兩種操作,在有數(shù)據修改的commit操作之后日志同步記錄到redo在線日志文件中,但是數(shù)據不會立即寫入到磁盤中,作為臟塊保存在buffercache中,只有當觸發(fā)checkpoint通知DBWR進程寫才會將臟塊寫入到磁盤。如下面圖1所示Oracle寫數(shù)據原理流程圖:[0048]因此在數(shù)據還未寫入磁盤的時候就做時間點快照切割,當出現(xiàn)Oracle數(shù)據庫損壞需要用此時間點做恢復的情況下,會造成因為恢復后數(shù)據庫不一致無法啟動的問題。[0049]本發(fā)明通過提供在⑶P實時備份和存儲快照將數(shù)據刷入磁盤、將Oracle數(shù)據庫處于靜默狀態(tài)、查詢一致性點時間區(qū)間做時間點快照切割,產生完備份時間點之后再將Oracle數(shù)據庫解除靜默狀態(tài)恢復正常運行狀態(tài)的技術方案??梢栽诓挥绊懹脩鬙racle數(shù)據庫正常運行的前提下,保證⑶P實時備份和存儲快照任意時間點都是滿足Oracle-致性的,都能成功恢復以達到業(yè)務連續(xù)且盡可能精確挽回數(shù)據丟失的目的。能有效降低用戶Oracle數(shù)據庫的運行風險,提升效率并減輕維護壓力。[0050]本發(fā)明Oracle⑶P、存儲快照下的數(shù)據保護技術,在解決Oracle-致性問題時主要分為兩個部分:[0051]一、在做時間點切割捕獲的時候首先要處理Oracle-致性將數(shù)據庫置為靜默狀態(tài)。[0052]二、再在完成時間點切割捕獲完之后再將數(shù)據庫置為非靜默狀態(tài),恢復正常Oracle生產狀態(tài)。[0053]如圖2所示,上述第一部分的具體內容如下:[0054](I).Oracle⑶P和存儲快照數(shù)據保護方案開始執(zhí)行時間點捕獲。[0055](2).通過Oracle官方提供的OCI接口,連接到做時間點捕獲的對應數(shù)據庫中。[0056](3)·通過"selectversionfromv$instane;"查詢Oracle的版本,目前主流的10g、Ilg和9i的處理一致性原理不一樣,因此處理方案也就不相同。[0057](4)·在sqlplus中通過''selectfile#,statusfromv$backup;,'查詢Oracle是否處于靜默狀態(tài),如果處于靜默狀態(tài),則分版本處理:[0058]例如查詢各個數(shù)據文件對應的靜默狀態(tài):[0059]SQL>selectfile#,statusfromv$backup;【權利要求】1.一種Oracle數(shù)據庫用的一致性數(shù)據保護與捕獲一致性狀態(tài)的方法,其特征在于,包括以下步驟:1)在⑶P實時備份和存儲快照時,將數(shù)據從緩存中刷入磁盤,并將Oracle數(shù)據庫置為靜默狀態(tài),然后查詢一致性時間段并做時間點快照切割;2)在完成時間點快照切割之后,再將數(shù)據庫置為非靜默狀態(tài),恢復正常Oracle生產狀態(tài)。2.根據權利要求1所述的一種Oracle數(shù)據庫用的一致性數(shù)據保護與捕獲一致性狀態(tài)的方法,其特征在于,所述的步驟1)具體如下:11)捕獲CDP實時備份和存儲快照開始時的時間點;12)通過Oracle數(shù)據庫提供的0CI接口,連接到捕獲時間點的對應數(shù)據庫中;13)查詢Oracle數(shù)據庫的版本;14)判斷Oracle數(shù)據庫是否處于靜默狀態(tài),若為是,根據不同版本采用不同指令將Oracle數(shù)據庫解除靜默狀態(tài),并執(zhí)行步驟15),否則,直接執(zhí)行步驟15);15)將buffercache中的臟數(shù)據塊寫入到disk中,并執(zhí)行步驟16);16)將Oracle數(shù)據庫置為靜默狀態(tài),并執(zhí)行步驟17);17)查詢捕獲Oracle數(shù)據庫的一致性時間段,并做時間點快照切割;18.Oracle數(shù)據庫達到一致性之后,通過Oracle⑶P或者存儲快照模塊捕獲時間點做數(shù)據保護。3.根據權利要求2所述的一種Oracle數(shù)據庫用的一致性數(shù)據保護與捕獲一致性狀態(tài)的方法,其特征在于,所述的根據不同版本采用不同指令將Oracle數(shù)據庫解除靜默狀態(tài)具體為:對于0racle9i:執(zhí)行命令"altertablespaceTOlendbackup;";OraclelOg&llg:執(zhí)行命令"alterdatabaseendbackup;,';即可將數(shù)據庫解除靜默狀態(tài)。4.根據權利要求2所述的一種Oracle數(shù)據庫用的一致性數(shù)據保護與捕獲一致性狀態(tài)的方法,其特征在于,所述的將Oracle數(shù)據庫置為靜默狀態(tài)具體為:對于0racle9i:依次執(zhí)行命令"altertablespaceTOlbeginbackup;altertablespaceT02beginbackup;",對Oracle附屬的各個表空間依次凍結,置為靜默狀態(tài);對于OraclelOg&llg:執(zhí)行命令"alterdatabasebeginbackup;"對整個Oracle數(shù)據庫凍結,置為靜默狀態(tài)。5.根據權利要求2所述的一種Oracle數(shù)據庫用的一致性數(shù)據保護與捕獲一致性狀態(tài)的方法,其特征在于,所述的步驟2)具體為:21.OracleCDP和存儲快照捕獲完時間點之后,開始執(zhí)行解除靜默狀態(tài);22)通過Oracle數(shù)據庫提供的0CI接口,連接到做時間點捕獲的對應數(shù)據庫中;23)查詢Oracle數(shù)據庫的版本;24)判斷Oracle是否處于靜默狀態(tài),若為是,根據不同版本對其進行靜默狀態(tài)解除,并執(zhí)行步驟25),否則直接執(zhí)行步驟25);25)校驗控制文件和各個數(shù)據文件頭的sen號,使各個文件的sen號都一致性,并將buffercache中的臟數(shù)據塊輸入到disk中去;26)0racle數(shù)據庫已經解除了靜默狀態(tài),將數(shù)據庫恢復成做一致性處理之前的生產狀態(tài)。6.根據權利要求5所述的一種Oracle數(shù)據庫用的一致性數(shù)據保護與捕獲一致性狀態(tài)的方法,其特征在于,所述的根據不同版本對其進行靜默狀態(tài)解除具體為:0racle9i:對數(shù)據文件對應的表空間執(zhí)行"altertablespaceTOlendbackup;"將表空間解除靜默狀態(tài);OraclelOg&llg:在sqlplus中執(zhí)行命令"alterdatabaseendbackup;"將數(shù)據庫解除靜默狀態(tài)。【文檔編號】G06F11/14GK104239444SQ201410440301【公開日】2014年12月24日申請日期:2014年9月1日優(yōu)先權日:2014年9月1日【發(fā)明者】羅強申請人:上海愛數(shù)軟件有限公司