《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計(jì) > 設(shè)計(jì)應(yīng)用 > Oracle數(shù)據(jù)庫非歸檔模式重做日志恢復(fù)方法
Oracle數(shù)據(jù)庫非歸檔模式重做日志恢復(fù)方法
2016年微型機(jī)與應(yīng)用第10期
王超,祝永志
(曲阜師范大學(xué) 信息科學(xué)與工程學(xué)院,山東 日照 276800)
摘要: Linux系統(tǒng)是在企業(yè)中廣泛使用的操作系統(tǒng),企業(yè)亦多基于該操作系統(tǒng)安裝數(shù)據(jù)庫。當(dāng)數(shù)據(jù)庫運(yùn)行在非歸檔模式中,且數(shù)據(jù)庫處于無日志備份的情況時,一旦重做日志文件丟失將會導(dǎo)致數(shù)據(jù)庫不可用。針對Oracle數(shù)據(jù)庫重做日志文件丟失問題,提出一種非歸檔模式下的重做日志恢復(fù)方法。實(shí)驗(yàn)證明,該方法能有效實(shí)現(xiàn)重做日志的無備份恢復(fù)。
Abstract:
Key words :

  王超,祝永志

  (曲阜師范大學(xué) 信息科學(xué)與工程學(xué)院,山東 日照 276800)

  摘要Linux系統(tǒng)是在企業(yè)中廣泛使用的操作系統(tǒng),企業(yè)亦多基于該操作系統(tǒng)安裝數(shù)據(jù)庫。當(dāng)數(shù)據(jù)庫運(yùn)行在非歸檔模式中,且數(shù)據(jù)庫處于無日志備份的情況時,一旦重做日志文件丟失將會導(dǎo)致數(shù)據(jù)庫不可用。針對Oracle數(shù)據(jù)庫重做日志文件丟失問題,提出一種非歸檔模式下的重做日志恢復(fù)方法。實(shí)驗(yàn)證明,該方法能有效實(shí)現(xiàn)重做日志的無備份恢復(fù)。

  關(guān)鍵詞:Oracle數(shù)據(jù)庫;非歸檔模式;日志恢復(fù);Linux

  0引言

  Oracle數(shù)據(jù)庫是廣泛應(yīng)用的大型關(guān)系型數(shù)據(jù)庫,數(shù)據(jù)庫的高可用性是一個重要的研究課題,快速準(zhǔn)確地恢復(fù)數(shù)據(jù)庫日志文件對提高數(shù)據(jù)庫可用性有重要意義。本文以Linux操作系統(tǒng)為基礎(chǔ),針對非歸檔模式下重做日志文件丟失問題提出一種恢復(fù)方法。實(shí)驗(yàn)表明,該方法能有效實(shí)現(xiàn)非歸檔模式下的重做日志文件恢復(fù),實(shí)現(xiàn)數(shù)據(jù)庫的可用性。

1重做日志概述

  重做日志文件(Redo Log File)用于保存表、索引或其他Oracle對象中添加、刪除或者改變數(shù)據(jù)的記錄。由于Oracle用循環(huán)的方式重復(fù)使用重做日志文件,因此每個Oracle數(shù)據(jù)庫有且至少有兩個重做日志文件。當(dāng)一個重做日志文件充滿重做日志條目時,如果系統(tǒng)需要實(shí)例恢復(fù),則當(dāng)前的日志文件標(biāo)記為ACTIVE;如果不需要實(shí)例恢復(fù),則標(biāo)記為INACTIVE;系統(tǒng)從文件開始按序列使用下一個日志文件,并將其標(biāo)記為CURRENT[1]。在Oracle數(shù)據(jù)庫體系結(jié)構(gòu)中,數(shù)據(jù)文件、控制文件、重做日志文件和歸檔日志文件等組成數(shù)據(jù)庫的文件系統(tǒng),如圖1所示。

001.jpg

  在現(xiàn)實(shí)使用中,為了保證數(shù)據(jù)庫穩(wěn)定運(yùn)行,通常需要對數(shù)據(jù)庫日志文件備份,日志文件與其鏡像文件記錄相同的日志信息,共同組成日志文件組。為了確保日志文件的安全,在同一個組中的日志文件通常會被放在不同的磁盤中[2]。日志文件丟失可能是由數(shù)據(jù)庫管理員(Database Administrator,DBA)操作引起不當(dāng),如誤刪日志文件,或由于磁盤存儲問題導(dǎo)致數(shù)據(jù)庫日志文件丟失。在重做日志文件丟失期間,可能會引起數(shù)據(jù)庫系統(tǒng)無法使用,此時一旦數(shù)據(jù)庫數(shù)據(jù)文件丟失,將無法及時恢復(fù),有可能會造成極大的損失。因此,確保重做日志文件的安全性、冗余性對確保數(shù)據(jù)庫系統(tǒng)穩(wěn)定是極為重要的。

2日志恢復(fù)存在的問題

  2.1歸檔模式

  Oracle數(shù)據(jù)庫可以運(yùn)行在歸檔(Archivelog)模式和非歸檔(Noarchivelog)模式。數(shù)據(jù)庫非歸檔模式只能用于保護(hù)數(shù)據(jù)庫實(shí)例失敗,而不能用于保護(hù)存儲介質(zhì)失敗。為了防止數(shù)據(jù)庫物理文件損壞所導(dǎo)致的數(shù)據(jù)丟失,數(shù)據(jù)庫通常運(yùn)行在歸檔模式下[3]。在實(shí)際的使用中,可能由于DBA的錯誤操作使數(shù)據(jù)庫系統(tǒng)運(yùn)行在非歸檔模式下,此時一旦重做日志文件丟失,則無法通過歸檔日志恢復(fù)重做日志。在此前研究中,數(shù)據(jù)庫日志的備份與恢復(fù)策略大多是基于歸檔模式[4],在非歸檔模式下的數(shù)據(jù)庫恢復(fù)也大多是使用RMAN通過備份文件恢復(fù)[56]。

  2.2一致性檢查

  在Oracle數(shù)據(jù)庫啟動過程中,當(dāng)啟系統(tǒng)動到裝載數(shù)據(jù)庫MOUNT狀態(tài)時會進(jìn)行數(shù)據(jù)一致性檢查[7],如圖2所示。在重做日志丟失的情況下,無法完成數(shù)據(jù)一致性檢查,為了使數(shù)據(jù)庫恢復(fù)可用,需要通過修改系統(tǒng)隱藏參數(shù),使數(shù)據(jù)庫在啟動時跳過一致性檢查。

  

002.jpg

  2.3身份驗(yàn)證

  在Oracle數(shù)據(jù)庫日志文件丟失期間,數(shù)據(jù)庫無法正常啟動并進(jìn)行基本的身份驗(yàn)證。此時,對數(shù)據(jù)庫的操作需要通過SYS用戶進(jìn)行,需通過操作系統(tǒng)認(rèn)證(Operating System Authentication,OSA)的方式獲得SYS用戶權(quán)限。

3重做日志恢復(fù)

  3.1恢復(fù)方法概述

  在Linux環(huán)境中,對非歸檔模式下故障的Oracle數(shù)據(jù)庫系統(tǒng)使用數(shù)據(jù)庫控制文件實(shí)現(xiàn)數(shù)據(jù)庫恢復(fù),并通過修改Linux系統(tǒng)中Oracle數(shù)據(jù)庫的隱藏參數(shù)“_allow_resetlogs_corruption”值實(shí)現(xiàn)跳過啟動一致性檢查,實(shí)現(xiàn)數(shù)據(jù)庫啟動,在此基礎(chǔ)上使用resetlogs方法完成重做日志文件的恢復(fù)。基于以上方法,進(jìn)行以下實(shí)驗(yàn)。

  3.2實(shí)驗(yàn)過程

  實(shí)驗(yàn)基于Linux環(huán)境中Oracle 11g R2數(shù)據(jù)庫系統(tǒng),由于Linux文件系統(tǒng)與Windows文件系統(tǒng)的差別,其恢復(fù)過程與在Windows環(huán)境中的恢復(fù)過程存在一定差異。為了模擬實(shí)際使用中重做日志恢復(fù)效果,這里手動刪除redo01.log、redo02.log、redo03.log 3個日志文件。在實(shí)際操作中建議提前對數(shù)據(jù)文件備份,防止恢復(fù)失敗導(dǎo)致數(shù)據(jù)丟失。在實(shí)驗(yàn)過程中也對一些常見的系統(tǒng)異常提示進(jìn)行相應(yīng)的處理,具體實(shí)驗(yàn)操作如下。

  (1)進(jìn)入系統(tǒng)命令終端,通過OSA方式獲得SYS用戶權(quán)限,按照常規(guī)流程使用startup命令啟動Oracle數(shù)據(jù)庫進(jìn)程:

  SQL>startup

  此時系統(tǒng)返回如下信息:

  Oracle instance started.

  ……

  Database mounted

  ORA-00313:open failed for members of log group 1 of thread 1

  ORA27037:unable to obtain file status

  Linux ERROR:2:No such file or directory

  Additional information:3

  (2)由于該數(shù)據(jù)庫文件系統(tǒng)缺少重做日志文件,系統(tǒng)提示無法找到文件,數(shù)據(jù)庫啟動過程中系統(tǒng)報(bào)錯。此時,可以使用下面的命令查詢當(dāng)前數(shù)據(jù)庫的實(shí)例名、數(shù)據(jù)庫歸檔模式和打開模式,確定當(dāng)前狀態(tài)所處開啟模式:

  SQL>select name,log_mode from vMYMdatabase;

  返回查詢結(jié)果如下:

2.png

  (3)這里的LOG_MODE為NOARCHIVELOG模式,說明數(shù)據(jù)庫處于非歸檔模式,且當(dāng)前數(shù)據(jù)庫開啟到MOUNTED狀態(tài)。此時,使用resetlogs方法打開數(shù)據(jù)庫,輸入以下命令:

  SQL>alter database open resetlogs;

  系統(tǒng)返回信息如下:

  ……

  ERROR at line 1:

  ORA01139:RESETLOGS option only valid after an complete database recovery

  (4)根據(jù)系統(tǒng)提示,數(shù)據(jù)庫如果要使用resetlogs方法,則需要在一個系統(tǒng)恢復(fù)之后,因此,需先對數(shù)據(jù)庫實(shí)施數(shù)據(jù)恢復(fù)。在該實(shí)驗(yàn)的情況中,由于實(shí)驗(yàn)環(huán)境中僅重做日志文件丟失,而控制文件未丟失,此處可通過使用控制文件對數(shù)據(jù)庫進(jìn)行恢復(fù),使用如下命令:

  SQL>recovery database using backup controlfile;

  系統(tǒng)返回異常:

  ……

  ORA00308:cannot open archived log

  ORA27037:unable to obtain file status

  Linuxx86_64 Error:2:No such file or directory

  (5)該問題的產(chǎn)生是由于系統(tǒng)處于非歸檔模式下,系統(tǒng)提示錯誤,歸檔日志無法使用,但實(shí)際中數(shù)據(jù)庫恢復(fù)過程已經(jīng)通過控制文件完成,此時再次使用resetlogs方法進(jìn)行數(shù)據(jù)庫日志恢復(fù),系統(tǒng)返回異常:

  ORA01113:file 1 needs media recovery

  ORA01110:data file 1:’/usr/app/oracle/oradata/orcl/

  system01.dbf’

  (6)該異常提示表明:如果要使用resetlogs方法恢復(fù)則需要通過恢復(fù)媒介,這里由于重做日志文件丟失,無法通過媒介來恢復(fù)。因此需要修改隱藏參數(shù),讓Oracle數(shù)據(jù)庫忽略數(shù)據(jù)一致性檢查。使用以下命令:

  SQL>alter system set”_allow_resetlogs_corruption”

  =true scope=spfile;

  System altered.

  (7)在修改完此參數(shù)后,使用強(qiáng)制數(shù)據(jù)庫重啟命令啟動數(shù)據(jù)庫:

  SQL>startup force mount

  系統(tǒng)返回如下信息:

  ……

  Database mounted.

  (8)數(shù)據(jù)庫裝載成功后,再次使用resetlogs方法執(zhí)行數(shù)據(jù)庫恢復(fù)。在一段時間之后,系統(tǒng)返回信息“Database altered”。該信息表明數(shù)據(jù)庫重做日志恢復(fù)完成,打開文件所在目錄,實(shí)例文件夾中顯示redo01.log、redo02.log、redo03.log 3個日志文件,重啟數(shù)據(jù)庫即完成恢復(fù)。

  (9)修改_allow _resetlogs_corruption參數(shù)為系統(tǒng)默認(rèn)的false,則在啟動時進(jìn)行數(shù)據(jù)一致性檢查:

  SQL>alter system reset”_allow_resetlogs_corruption” scope=spfile;

  (10)使用startup force命令重啟數(shù)據(jù)庫后,查詢修改的隱藏參數(shù)值:

  SQL>selcet KSPPINM,KSPPSTVL from xMYMksppi a,

  xMYMksppcv b where a.indx=b.indx and ksppinm like ‘%resetlogs’;

  返回查詢結(jié)果如下:

1.png

  (11)啟用Oracle數(shù)據(jù)庫的歸檔模式,增強(qiáng)數(shù)據(jù)庫系統(tǒng)的可用性:

  SQL>alter database archivelog;

  使用命令查看歸檔日志列表:

  SQL>archive log list;

  Database log mode Archive Mode Automatic archival Enable

  得到以上返回信息說明數(shù)據(jù)庫已經(jīng)運(yùn)行在歸檔模式下,實(shí)驗(yàn)完成。

4結(jié)論

  通過實(shí)驗(yàn)證明,本文提出的Oracle數(shù)據(jù)庫重做日志的恢復(fù)方法能夠有效實(shí)現(xiàn)在Linux系統(tǒng)下非歸檔模式重做日志文件的恢復(fù),實(shí)現(xiàn)Oracle數(shù)據(jù)庫系統(tǒng)的故障恢復(fù),提高數(shù)據(jù)庫系統(tǒng)的可用性。

  參考文獻(xiàn)

  [1] BRYLA B,LONEY K.Oracle database 11g DBA handbook[M].New York:McGrawHill,2007.

  [2] 王偉平.Oracle 11g網(wǎng)絡(luò)大講堂[M].北京:清華大學(xué)出版社,2013.

  [3] 賀亞茹.Oracle數(shù)據(jù)庫日志文件損壞時修復(fù)方法的實(shí)驗(yàn)研究[J].計(jì)算機(jī)應(yīng)用,2009,29(S2):393395.

  [4]韋德強(qiáng).Oracle數(shù)據(jù)庫的備份與恢復(fù)策略[J].電腦知識與技術(shù),2010,6(19):53675370.

  [5] 王良瑩.Oracle數(shù)據(jù)庫故障恢復(fù)技術(shù)剖析[J].電腦編程技巧與維護(hù),2011,50(14):123124, 135.

  [6] 劉超,張明安.基于Oracle數(shù)據(jù)庫系統(tǒng)的備份與恢復(fù)技術(shù)研究[J].軟件,2014,35(3):125128.

  [7] 周文瓊,王樂球.Oracle數(shù)據(jù)庫啟動過程研究與實(shí)踐[J].軟件導(dǎo)刊,2011,10(7):169171.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
久久成人国产| 在线综合欧美| 亚洲免费激情| 亚洲国产欧美一区二区三区久久| 国产偷久久久精品专区| 国产精品一区二区三区久久| 国产精品久久久久9999| 欧美性理论片在线观看片免费| 欧美精品在线一区二区| 欧美激情免费观看| 欧美精品18+| 欧美精品免费视频| 欧美久久一级| 欧美日韩成人精品| 欧美精品成人一区二区在线观看| 欧美91精品| 欧美剧在线观看| 欧美激情在线狂野欧美精品| 欧美激情第9页| 欧美另类综合| 欧美日韩精品福利| 国产精品成人va在线观看| 欧美视频一区二| 欧美午夜精品久久久久久孕妇| 欧美日韩一级大片网址| 欧美性大战xxxxx久久久| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ入口 | 久久精品日韩一区二区三区| 久久精品国产77777蜜臀| 久久精品国产第一区二区三区最新章节 | 国产精品ⅴa在线观看h| 国产精品久久久久久妇女6080| 国产乱肥老妇国产一区二| 国产亚洲一级高清| 在线观看一区| 亚洲毛片在线看| 亚洲自拍偷拍色片视频| 欧美一区二区三区成人| 最近中文字幕日韩精品| 亚洲日本电影在线| 99视频精品全部免费在线| 亚洲视频久久| 欧美综合国产| 亚洲精品视频免费在线观看| 亚洲在线中文字幕| 久久久久久91香蕉国产| 欧美激情成人在线视频| 国产精品一区二区在线观看网站 | 亚洲承认在线| 在线视频欧美日韩精品| 欧美在线视频一区二区| 亚洲精品自在久久| 欧美一区二区视频97| 牛夜精品久久久久久久99黑人 | 亚洲高清不卡在线观看| 制服诱惑一区二区| 久久av资源网站| 欧美高清视频一区二区| 国产精品久久久久9999高清 | 日韩视频免费观看高清在线视频| 亚洲一区二区免费看| 久久久久国产精品一区二区| 欧美日韩精品一区视频| 国产一区在线播放| 亚洲伦理自拍| 亚洲二区在线| 亚洲欧美在线看| 欧美成人精品三级在线观看| 国产精品激情电影| 亚洲国产另类久久久精品极度| 亚洲一区国产精品| 亚洲激情在线播放| 欧美一区二区三区播放老司机| 欧美成人免费在线| 国产一区二区无遮挡| 宅男在线国产精品| 亚洲精品国产精品国自产在线| 欧美亚洲免费电影| 欧美日韩在线亚洲一区蜜芽| 一区在线视频| 欧美一区二区精品在线| 亚洲一区3d动漫同人无遮挡| 欧美不卡高清| 国内精品久久久久久久影视蜜臀 | 亚洲一区二区三区高清| 欧美成人久久| 国产一区亚洲| 亚洲在线观看免费| 亚洲视频导航| 欧美激情无毛| 在线观看亚洲a| 久久激情五月激情| 久久疯狂做爰流白浆xx| 国产精品国产三级国产专播品爱网| 在线观看视频一区二区| 欧美在线视频二区| 性做久久久久久久免费看| 欧美三级免费| 亚洲日本aⅴ片在线观看香蕉| 亚洲国产精品一区制服丝袜| 久久久综合香蕉尹人综合网| 国产九九精品视频| 亚洲免费在线视频一区 二区| 亚洲一区美女视频在线观看免费| 欧美久久久久久久| 亚洲黄网站黄| 亚洲美女黄网| 欧美乱在线观看| 亚洲国产小视频| 亚洲三级视频在线观看| 欧美成人69av| 亚洲国产裸拍裸体视频在线观看乱了中文| 久久精品一区二区国产| 久久久久久久久久久久久9999| 国产毛片精品国产一区二区三区| 亚洲一区在线免费| 香蕉久久久久久久av网站| 国产精品色网| 亚洲欧美精品一区| 欧美一二三视频| 国产日韩欧美一区二区三区四区| 亚洲欧美日本国产有色| 欧美综合77777色婷婷| 国产视频一区二区三区在线观看| 香蕉成人久久| 久久久夜色精品亚洲| 激情综合网激情| 91久久精品视频| 欧美日韩成人一区| 中文在线资源观看视频网站免费不卡| 亚洲自拍偷拍福利| 国产精品午夜国产小视频| 亚洲欧美一区二区三区久久| 欧美一区二区视频在线| 国产一区二区三区四区在线观看| 亚洲福利视频专区| 欧美寡妇偷汉性猛交| 亚洲伦理网站| 亚洲欧美在线x视频| 国产亚洲福利一区| 亚洲高清在线视频| 欧美国产精品久久| 99国产麻豆精品| 午夜精品久久久久久久99热浪潮| 国产三级精品三级| 91久久极品少妇xxxxⅹ软件| 欧美激情综合五月色丁香小说 | 午夜精品久久久久99热蜜桃导演| 久久精品日韩欧美| 亚洲国产欧美一区二区三区同亚洲| 一区二区三区视频在线看| 国产精品美女| 亚洲福利视频三区| 欧美日韩一区二区免费在线观看| 亚洲自拍三区| 欧美mv日韩mv国产网站| 日韩视频在线免费观看| 欧美一区二区三区的| 韩日欧美一区| 中文在线资源观看网站视频免费不卡 | 久久手机免费观看| 亚洲国产一区在线观看| 亚洲一区二区在线免费观看视频| 国产美女精品在线| 亚洲日韩欧美视频一区| 国产精品av久久久久久麻豆网| 久久成人人人人精品欧| 欧美日韩理论| 香蕉av777xxx色综合一区| 欧美大片免费| 亚洲天堂免费观看| 另类天堂av| 亚洲天堂激情| 免费成人黄色片| 亚洲婷婷在线| 免费观看成人鲁鲁鲁鲁鲁视频| 一区二区三区欧美成人| 久久字幕精品一区| 亚洲视频免费| 欧美福利电影在线观看| 午夜精品免费视频| 欧美日韩四区| 亚洲国产精品女人久久久| 国产精品一区二区你懂的| 亚洲美女在线看| 国产一级精品aaaaa看| 一区二区三区www| 国产综合欧美在线看| 亚洲天堂偷拍| 在线成人性视频| 欧美一区二区黄| 日韩亚洲国产精品| 久久中文字幕一区| 亚洲自拍偷拍色片视频| 欧美日产在线观看| 亚洲国产高清aⅴ视频| 国产精品主播| 亚洲中字在线| 亚洲人成人一区二区三区| 久久免费少妇高潮久久精品99|