• <ul id="mayc0"></ul>
    <ul id="mayc0"><center id="mayc0"></center></ul>
    <strike id="mayc0"><input id="mayc0"></input></strike>
    <ul id="mayc0"></ul>
  • 始創于2000年 股票代碼:831685
    咨詢熱線:0371-60135900 注冊有禮 登錄
    • 掛牌上市企業
    • 60秒人工響應
    • 99.99%連通率
    • 7*24h人工
    • 故障100倍補償
    您的位置: 網站首頁 > 幫助中心>文章內容

    Oracle 登錄產生了01033錯誤

    發布時間:  2012/8/13 17:01:30

    損壞聯機日志的恢復方法

    損壞非當前聯機日志

    大家都清楚,聯機日志分為當前聯機日志和非當前聯機日志,非當前聯機日志的損壞是比較簡單的,一般通過clear命令就可以解決問題。

    1、啟動數據庫,遇到ORA-00312   or   ORA-00313錯誤,如

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

    ORA-00312:   online   log   1   thread   1:   'D:\Oracle\ORADATA\TEST\REDO01.LOG'

    從這里我們知道日志組1的數據文件損壞了

    從報警文件可以看到更詳細的信息

    2、查看V$log視圖

    SQL>   select   group#,sequence#,archived,status   from   v$log;

    GROUP#     SEQUENCE#   ARCHIVED   STATUS

    ----------   ----------   --------   ----------------

    1                     1   YES             INACTIVE

    2                     2   YES             INACTIVE

    3                     3   NO               CURRENT

    可以知道,該組是非當前狀態,而且已經歸檔。

    3、用CLEAR命令重建該日志文件

    SQL>alter   database   clear   logfile   group   1;

    如果是該日志組還沒有歸檔,則需要用

    SQL>alter   database   clear   unarchived   logfile   group   1;

    4、打開數據庫,重新備份數據庫

    SQL>alter   database   open;

    說明:

      1、如果損壞的是非當前的聯機日志文件,一般只需要clear就可以重建該日志文件,但是如果該數據庫處于歸檔狀態但該日志還沒有歸檔,就需要強行clear。

      2、建議clear,特別是強行clear后作一次數據庫的全備份。

      3、此方法適用于歸檔與非歸檔數據庫

    5.1.2   損壞當前聯機日志

    歸檔模式下當前日志的損壞有兩種情況,

      一、是數據庫是正常關閉,日志文件中沒有未決的事務需要實例恢復,當前日志組的損壞就可以直接用alter   database   clear   unarchived   logfile   group   n來重建。

      二、是日志組中有活動的事務,數據庫需要媒體恢復,日志組需要用來同步,有兩種補救辦法

    A.   最好的辦法就是通過不完全恢復,可以保證數據庫的一致性,但是這種辦法要求在歸檔方式下,并且有可用的備份

    B.   通過強制性恢復,但是可能導致數據庫不一致。

    下面分別用來說明這兩種恢復方法

    5.1.2.1   通過備份來恢復

    1、打開數據庫,會遇到一個類似的錯誤

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

    ORA-00312:   online   log   1   thread   1:   'D:\Oracle\ORADATA\TEST\REDO01.LOG'

    ORA-27041:   unable   to   open   file

    OSD-04002:   unable   to   open   file

    O/S-Error:   (OS   2)   系統找不到指定的文件

    2、查看V$log,發現是當前日志

    SQL>   select   group#,sequence#,archived,status   from   v$log;

    GROUP#     SEQUENCE#   ARCHIVED   STATUS

    ----------   ----------   --------   ----------------

    1                     1   NO               CURRENT

    2                     2   YES             INACTIVE

    3                     3   YES             INACTIVE

    3、發現clear不成功

    SQL>   alter   database   clear   unarchived   logfile   group   1;

    alter   database   clear   unarchived   logfile   group   1

    *

    ERROR   at   line   1:

    ORA-01624:   log   1   needed   for   crash   recovery   of   thread   1

    ORA-00312:   online   log   1   thread   1:   'D:\Oracle\ORADATA\TEST\REDO01.LOG'

    4、拷貝有效的數據庫的全備份,并不完全恢復數據庫

    可以采用獲取最近的SCN的辦法用until   scn恢復或用until   cnacel恢復

    recover   database   until   cancel

    先選擇auto,盡量恢復可以利用的歸檔日志,然后重新

    recover   database   until   cancel

    這次輸入cancel,完成不完全恢復,也就是說恢復兩次。

    如:

    SQL>   recover   database   until   cancel;

    Auto

    ……

    SQL>   recover   database   until   cancel;

    Cancel;

    5、利用alter   database   open   resetlogs打開數據庫

    說明:

    1、這種辦法恢復的數據庫是一致的不完全恢復,會丟失當前聯機日志中的事務數據

    2、這種方法適合于歸檔數據庫并且有可用的數據庫全備份。

    3、恢復成功之后,記得再做一次數據庫的全備份。

    4、建議聯機日志文件一定要實現鏡相在不同的磁盤上,避免這種情況的發生,因為任何數據的丟失對于生產來說都是不容許的。

    5.1.2.2   如果沒有備份,進行強制性恢復

    1、打開數據庫,會遇到一個類似的錯誤

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

    ORA-00312:   online   log   1   thread   1:   'D:\Oracle\ORADATA\TEST\REDO01.LOG'

    ORA-27041:   unable   to   open   file

    OSD-04002:   unable   to   open   file

    O/S-Error:   (OS   2)   系統找不到指定的文件

    2、查看V$log,發現是當前日志

    SQL>   select   group#,sequence#,archived,status   from   v$log;

    GROUP#     SEQUENCE#   ARCHIVED   STATUS

    ----------   ----------   --------   ----------------

    1                     1   NO               CURRENT

    2                     2   YES             INACTIVE

    3                     3   YES             INACTIVE

    3、發現clear不成功

    SQL>   alter   database   clear   unarchived   logfile   group   1;

    alter   database   clear   unarchived   logfile   group   1

    *

    ERROR   at   line   1:

    ORA-01624:   log   1   needed   for   crash   recovery   of   thread   1

    ORA-00312:   online   log   1   thread   1:   'D:\Oracle\ORADATA\TEST\REDO01.LOG'

    4、把數據庫down掉

    SQL>shutdown   immediate

    5、在init<sid>.ora中加入如下參數

    _allow_resetlogs_corruption=TRUE

    6、重新啟動數據庫,利用until   cancel恢復

    SQL>recover   database   until   cancel;

    Cancel

    如果出錯,不再理會,發出

    SQL>alter   database   open   resetlogs;

    7、數據庫被打開后,馬上執行一個full   export

    8、shutdown數據庫,去掉_all_resetlogs_corrupt參數

    9、重建庫

    10、import并完成恢復

    11、建議執行一下ANALYZE   TABLE   ...VALIDATE   STRUCTURE   CASCADE;

    說明:

      1、該恢復方法是沒有辦法之后的恢復方法,一般情況下建議不要采用,因為該方法可能導致數據庫的不一致

      2、該方法也丟失數據,但是丟失的數據沒有上一種方法的數據多,主要是未寫入數據文件的已提交或未提交數據。

      3、建議成功后嚴格執行以上的7到11步,完成數據庫的檢查與分析

      4、全部完成后做一次數據庫的全備份

      5、建議聯機日志文件一定要實現鏡相在不同的磁盤上,避免這種情況的發生,因為任何數據的丟失對于生產來說都是不容許的。


    本文出自:億恩科技【www.vbseamall.com】

    服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經營性ICP/ISP證:贛B2-20080012
  • 服務器/云主機 24小時售后服務電話:0371-60135900
  • 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
  • 專注服務器托管17年
    掃掃關注-微信公眾號
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
      0
     
     
     
     

    0371-60135900
    7*24小時客服服務熱線