【摘要】 大型數(shù)據(jù)庫(kù)Oracle的恢復(fù)和備份中,備份和恢復(fù)是兩個(gè)互相聯(lián)系的概念。數(shù)據(jù)庫(kù)處于非歸檔模式下常使用脫機(jī)備份。本文研究如何利用脫機(jī)備份,在數(shù)據(jù)庫(kù)處于mount狀態(tài)下恢復(fù)數(shù)據(jù)庫(kù)信息,并利用Oracle數(shù)據(jù)庫(kù)的重做日志文件對(duì)上次備份后的數(shù)據(jù)更新進(jìn)行自動(dòng)恢復(fù)的過(guò)程。
【關(guān)鍵字】 .dbf數(shù)據(jù)文件 脫機(jī)備份 Oracle mount狀態(tài)
一、前言
備份和恢復(fù)是兩個(gè)互相聯(lián)系的概念,備份就是將數(shù)據(jù)信息保存起來(lái);而恢復(fù)則是當(dāng)意外事件發(fā)生或者某種需要時(shí),將已備份的數(shù)據(jù)信息還原到數(shù)據(jù)庫(kù)系統(tǒng)中去。
備份分為物理備份和邏輯備份。其中,物理備份是拷貝數(shù)據(jù)庫(kù)文件而不是其邏輯內(nèi)容,物理備份又分為冷備份與熱備份。
冷備份是在數(shù)據(jù)庫(kù)保持關(guān)閉狀態(tài)下,把數(shù)據(jù)庫(kù)的物理文件復(fù)制到其他地方保存起來(lái)以備后用的過(guò)程。本文主要關(guān)注大型數(shù)據(jù)庫(kù)Oracle的脫機(jī)備份及數(shù)據(jù)庫(kù)出現(xiàn)故障后的恢復(fù)過(guò)程。
二、脫機(jī)備份特點(diǎn)
脫機(jī)備份又稱為冷備份,是在數(shù)據(jù)庫(kù)已經(jīng)正常關(guān)閉后進(jìn)行的備份。它直接備份數(shù)據(jù)庫(kù)的相關(guān)文件,包括數(shù)據(jù)文件,控制文件等,適應(yīng)于適用于數(shù)據(jù)庫(kù)處于非歸檔模式下。冷備份發(fā)生在數(shù)據(jù)庫(kù)已經(jīng)正常關(guān)閉的情況下,當(dāng)正常關(guān)閉時(shí)會(huì)提供給我們一個(gè)完整的數(shù)據(jù)庫(kù)。冷備份是將關(guān)鍵性文件拷貝到另外位置的一種說(shuō)法。對(duì)于備份Oracle 信息而言,冷備份較安全的方法。
冷備份的優(yōu)點(diǎn):
是非常快速的備份方法(只需拷貝文件);容易恢復(fù)到某個(gè)時(shí)間點(diǎn)上(只需將文件再拷貝回去);能與歸檔方法相結(jié)合,作數(shù)據(jù)庫(kù)“最新?tīng)顟B(tài)”的恢復(fù);低度維護(hù),高度安全。
冷備份的不足:
單獨(dú)使用時(shí),只能提供到“某一時(shí)間點(diǎn)上”的恢復(fù);在實(shí)施備份的全過(guò)程中,數(shù)據(jù)庫(kù)必須要作備份而不能作其它工作。也就是說(shuō),在冷備份過(guò)程中,數(shù)據(jù)庫(kù)必須是關(guān)閉狀態(tài);若磁盤空間有限,只能拷貝到磁帶等其它外部存儲(chǔ)設(shè)備上,速度會(huì)很慢;不能按表或按用戶恢復(fù)。
冷備份中常拷貝的文件包括:1.所有數(shù)據(jù)文件2.所有控制文件3.所有聯(lián)機(jī)REDO LOG 文件4.初始化參數(shù)文件InitSID.ora 文件 5.本地口令驗(yàn)證文件 PWDSID.ora。本文以數(shù)據(jù)文件按.dbf文件為例進(jìn)行Oracle數(shù)據(jù)庫(kù)的備份和恢復(fù)。
三、實(shí)施與實(shí)驗(yàn)驗(yàn)證
當(dāng)數(shù)據(jù)文件出現(xiàn)介質(zhì)故障時(shí),利用之前已經(jīng)拷貝的數(shù)據(jù)文件(.dbf文件),實(shí)現(xiàn)數(shù)據(jù)庫(kù)的恢復(fù)。該恢復(fù)以在 mount狀態(tài)下恢復(fù)為主。具體步驟:
關(guān)閉數(shù)據(jù)庫(kù),備份已有的數(shù)據(jù)文件。
重新裝載并打開(kāi)數(shù)據(jù)庫(kù)。對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,創(chuàng)建一張新表,插入一條記錄。
重新關(guān)閉數(shù)據(jù)庫(kù),將其中的數(shù)據(jù)文件刪除。
裝載數(shù)據(jù)庫(kù),讓數(shù)據(jù)庫(kù)處于mount狀態(tài)。打開(kāi)數(shù)據(jù)庫(kù),此時(shí)系統(tǒng)會(huì)報(bào)錯(cuò),說(shuō)明已經(jīng)丟失一個(gè)數(shù)據(jù)文件,并告知丟失的數(shù)據(jù)文件的號(hào)。
將已經(jīng)轉(zhuǎn)儲(chǔ)的數(shù)據(jù)文件復(fù)制回Oracle。
進(jìn)行數(shù)據(jù)文件恢復(fù)操作。重新打開(kāi)數(shù)據(jù)庫(kù)。
登陸Oracle,查詢新增加的數(shù)據(jù)表,發(fā)現(xiàn)找回。原因是Oracle利用重做日志文件對(duì)上次備份后的數(shù)據(jù)更新進(jìn)行自動(dòng)恢復(fù)。
四、實(shí)驗(yàn)驗(yàn)證
4.1 數(shù)據(jù)文件的備份
以sysdba身份登陸,關(guān)閉數(shù)據(jù)庫(kù),關(guān)閉后脫機(jī)備份已有數(shù)據(jù)文件c:\101.dbf。注意:若沒(méi)有該數(shù)據(jù)文件,請(qǐng)執(zhí)行代碼:create tablespace t1 datafile ‘c:\101.dbf size 10m。
重新裝載并打開(kāi)數(shù)據(jù)庫(kù):以system 身份登陸,創(chuàng)建新表:testtable1,并插入一條記錄。
第二次關(guān)閉數(shù)據(jù)庫(kù),刪除已經(jīng)備份的數(shù)據(jù)文件c:\101.dbf, 通過(guò)Startup mount命令重新裝載數(shù)據(jù)庫(kù),讓數(shù)據(jù)庫(kù)處于mount 狀態(tài)。通過(guò)alter database open ,嘗試打開(kāi)數(shù)據(jù)庫(kù)。發(fā)現(xiàn)出現(xiàn)錯(cuò)誤,提示為無(wú)法鎖定數(shù)據(jù)文件c:\101. dbf。
4.2 數(shù)據(jù)庫(kù)恢復(fù)
通過(guò)Shutdown immediate再次關(guān)閉數(shù)據(jù)庫(kù)。將備份的數(shù)據(jù)文件101.dbf 拷貝到原始目錄下,本例為c:\。注意該數(shù)據(jù)文件備份的節(jié)點(diǎn)為創(chuàng)建測(cè)試表testtable1之前,即該數(shù)據(jù)文件中沒(méi)有表testtable1的信息。如需要介質(zhì)恢復(fù),則通過(guò)命令recover datafile ‘c:\101.dbf 進(jìn)行介質(zhì)恢復(fù),并驗(yàn)證數(shù)據(jù)庫(kù)是否恢復(fù)正常。
發(fā)現(xiàn)物理備份的101.dbf中應(yīng)該沒(méi)有備份后故障前的信息,即測(cè)試表testtable1 信息,但恢復(fù)后該信息依然在,這是后援副本+日志文件的力量。
四、總結(jié)
Oracle數(shù)據(jù)庫(kù)的物理文件主要包括配置文件、數(shù)據(jù)文件、控制文件、重做日志文件和歸檔日志文件等,對(duì)于大型分布式數(shù)據(jù)庫(kù)來(lái)說(shuō),隔一段時(shí)間的物理備份是必要的,本文研究了Oracle數(shù)據(jù)庫(kù)的數(shù)據(jù)文件的備份和恢復(fù),為提高數(shù)據(jù)庫(kù)的容災(zāi)性能提供了保障。
參 考 文 獻(xiàn)
[1] 王立君.并行多媒體數(shù)據(jù)庫(kù)中基于內(nèi)容的高效檢索的數(shù)據(jù)分配方法的研究. [J]科學(xué)技術(shù)與工程,2013.13(9),2544-2548.
[2] 郭晉秦, 韓 焱. 大型數(shù)據(jù)庫(kù)聚類中偽裝危險(xiǎn)數(shù)據(jù)識(shí)別方法研究. 計(jì)算機(jī)仿真 2015.433-436 32(11)
[3] 徐洪麗,王志軍.認(rèn)知策略與知識(shí)結(jié)構(gòu)化的研究與應(yīng)用-以大型數(shù)據(jù)庫(kù)學(xué)習(xí)為例. 高教學(xué)刊. 2016.3 73-74.
[4] 李亞龍, 朱巖. 表分區(qū)在分界開(kāi)關(guān)監(jiān)控系統(tǒng)數(shù)據(jù)庫(kù)的應(yīng)用.2016(25)2: P235-237
[5] 史斌.大型數(shù)據(jù)庫(kù)管理系統(tǒng) Oracle 體系結(jié)構(gòu). 電腦編程技巧與維護(hù). 2010.18:p72-74