• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      Oracle數(shù)據(jù)庫非歸檔模式重做日志恢復(fù)方法

      2016-06-02 11:28:28祝永志曲阜師范大學(xué)信息科學(xué)與工程學(xué)院山東日照276800
      關(guān)鍵詞:Oracle數(shù)據(jù)庫

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

      ?

      Oracle數(shù)據(jù)庫非歸檔模式重做日志恢復(fù)方法

      王超,祝永志
      (曲阜師范大學(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所示。

      在現(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)定是極為重要的。

      圖1 Oracle數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)

      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ù)庫在啟動時跳過一致性檢查。

      圖2 Oracle數(shù)據(jù)庫啟動過程

      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-resetlogscorruption”值實(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)與W indows文件系統(tǒng)的差別,其恢復(fù)過程與在W indows環(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.

      ……

      Databasemounted

      ORA-00313:open failed formembers 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)報錯。此時,可以使用下面的命令查詢當(dāng)前數(shù)據(jù)庫的實(shí)例名、數(shù)據(jù)庫歸檔模式和打開模式,確定當(dāng)前狀態(tài)所處開啟模式:

      SQL>select name,log-mode from vMYMdatabase;

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

      NAME LOG-MODE OPEN-MODE ORCL NOARCHIVELOG MOUNTED

      (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 needsmedia 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 forcemount

      系統(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é)果如下:

      KSPPINM KSPPSTVL -no-recovery-through-resetlogs FALSE -allow-resetlogs-corruption FALSE

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

      SQL>alter database archivelog;

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

      SQL>archive log list;

      Database logmode 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ī)應(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.

      王超(1991 -),男,碩士研究生,主要研究方向:分布式數(shù)據(jù)庫。

      祝永志(1964 -),男,碩士,教授,主要研究方向:并行與分布式計算、分布式數(shù)據(jù)庫。

      引用格式:王超,祝永志.Oracle數(shù)據(jù)庫非歸檔模式重做日志恢復(fù)方法[J].微型機(jī)與應(yīng)用,2016,35(10):79-81.

      Method of redo log recovery for Oracle database in noarchivelog mode

      Wang Chao,Zhu Yongzhi
      (School of Information Science and Engineering,Qufu Normal University,Rizhao 276800,China)

      Abstract:Linux operating system is widely used in the enterprise,and many enterprise installs database based on this operating system.When the database is running in noarchivelog mode,and there is no log backup for database,once the redo log file is lost,the database is not available.For this problem,a redo log recovery method in noarchivelog mode is proposed.The experiment shows that this method can effectively achieve the recovery of the redo log.

      Key words:Oracle database;noarchivelogmode;log recovery;Linux

      作者簡介:

      收稿日期:(2016-01-25)

      中圖分類號:TP311.13

      文獻(xiàn)標(biāo)識碼:A

      DOI:10.19358 /j.issn.1674-7720.2016.09.027

      猜你喜歡
      Oracle數(shù)據(jù)庫
      Oracle數(shù)據(jù)庫安全管理策略的優(yōu)化
      Oracle數(shù)據(jù)庫應(yīng)用問題與解決方案分析
      Oracle數(shù)據(jù)庫安全問題分析及策略
      Oracle數(shù)據(jù)庫的存儲結(jié)構(gòu)
      一種Oracle數(shù)據(jù)庫表空間監(jiān)控方法
      《Oracle數(shù)據(jù)庫》課程教學(xué)模式探究 
      宁南县| 桂平市| 喀什市| 施秉县| 黄浦区| 东山县| 万源市| 斗六市| 望都县| 洛宁县| 广饶县| 普定县| 五华县| 平乐县| 沙田区| 太仆寺旗| 城市| 谷城县| 阳江市| 甘洛县| 桃园县| 长治市| 巫山县| 武安市| 从江县| 柳林县| 云阳县| 益阳市| 阿巴嘎旗| 高要市| 泽州县| 门头沟区| 六盘水市| 钟山县| 郴州市| 南通市| 乐昌市| 新宁县| 昌宁县| 孟州市| 曲周县|