自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

怎樣恢復(fù)Oracle重做日志丟失的竅門

數(shù)據(jù)庫 Oracle
Oracle重做日志文件循環(huán)記錄了數(shù)據(jù)庫所有的事務(wù)。它的大小、個數(shù)和存儲位置對數(shù)據(jù)庫性能和恢復(fù)有重要影響。下面就故障現(xiàn)象,恢復(fù)方法作深入描述。

如果數(shù)據(jù)庫在啟動時檢測到重做日志丟失,數(shù)據(jù)庫將無法啟動。如果數(shù)據(jù)庫在運(yùn)行時切換日志文件組,檢測到下一組或者全部的重做日志丟失,數(shù)據(jù)庫將會崩潰。所以有必要學(xué)習(xí)下Oracle重做日志恢復(fù)的技巧。

由于磁盤介質(zhì)損壞或者人為的誤刪除文件,造成嚴(yán)重后果的事件近期時有發(fā)生。本文列舉了重做日志丟失的數(shù)據(jù)庫恢復(fù),但如果按照冗余原則合理分布日志文件組的成員,如果工程師了解日志文件的基本原理和使用原則,就完全可以避免出現(xiàn)下列問題。

Oracle重做日志文件循環(huán)記錄了數(shù)據(jù)庫所有的事務(wù)。它的大小、個數(shù)和存儲位置對數(shù)據(jù)庫性能和恢復(fù)有重要影響。它一般由大小相同的幾組文件構(gòu)成。我們可以查看數(shù)據(jù)庫視圖v$logfile知道redo logfile的個數(shù)和存儲位置。對每一個Oracle數(shù)據(jù)庫都要求至少具有兩個聯(lián)機(jī)重做日志。

每一次新的事務(wù)提交時,Oracle將該事務(wù)寫入日志文件,但并非此時也將修改的數(shù)據(jù)塊寫回原數(shù)據(jù)文件。由于內(nèi)存讀寫和磁盤I/O存在幾個數(shù)量級的效率差別,Oracle通過減少數(shù)據(jù)文件的物理I/O讀寫來大大提高數(shù)據(jù)庫的性能;同時,又通過優(yōu)先寫日志文件來保證數(shù)據(jù)的正確性和一致性?;谶@種機(jī)制,Oracle重做日志文件在數(shù)據(jù)庫的實(shí)例恢復(fù)和介質(zhì)恢復(fù)時至關(guān)重要,是oracle數(shù)據(jù)庫最重要的物理文件之一。

恢復(fù)方法

故障現(xiàn)象

  1. SQL> startup mount        
  2. Oracle Instance Started        
  3. Database mounted        
  4. ORA-00313: open failed for members of log group 1 of thread 1        
  5. ORA-00312: online log 1 thread 1: '/ORACLE/ORADATA/H817/REDO01.LOG'        
  6. ORA-27041: unable to open file        
  7. OSD-04002: unable to open file        
  8. O/S-Error: (OS 2) The system cannot find the file specified.   

Oracle重做日志恢復(fù)注意事項(xiàng)

以下所列舉的恢復(fù)方法,都屬于不完全恢復(fù)或者強(qiáng)制恢復(fù),會丟失當(dāng)前重做日志中的事務(wù)數(shù)據(jù)。一旦操作不當(dāng),將帶來數(shù)據(jù)丟失等嚴(yán)重后果,請遵循以下幾個恢復(fù)原則:
1. 請勿在生產(chǎn)系統(tǒng)上試用。
2. 如果生產(chǎn)系統(tǒng)出現(xiàn)重做日志文件丟失的故障,請勿自行操作破壞現(xiàn)場,應(yīng)該立刻聯(lián)系Oracle工程師。
3. 恢復(fù)成功之后,需要馬上做一次數(shù)據(jù)庫的全備份。
4. 建議重做日志文件一定要實(shí)現(xiàn)鏡象在不同的磁盤上,避免這種情況的發(fā)生。

恢復(fù)方法
1.        首先檢查重做日志文件狀態(tài),看看報錯的日志文件的狀態(tài)是否為Current

  1. SQL> select * from v$log;        
  2. SQL> select * from v$logfile;   

2.        如果重做日志文件狀態(tài)為Inactive,我們可以直接清除該日志文件的內(nèi)容:

  1. SQL> alter database clear logfile '/ORACLE/ORADATA/H817/REDO01.LOG';
    3.  如果重做日志文件狀態(tài)為Current,恢復(fù)工作較為復(fù)雜,有以下四種情況:
    1)通過下面步驟,數(shù)據(jù)庫順利打開
  1. SQL> recover database until cancel;                  
  2. Type Cancel when prompted         
  3. SQL>alter database open resetlogs;  

2)***種情況的'recover database until cancel' 操作遇到ORA-01547,ORA-01194,ORA-01110錯誤,需要整個數(shù)據(jù)庫的物理備份,并根據(jù)歸檔日志恢復(fù)到錯誤時間點(diǎn),前提是數(shù)據(jù)庫是歸檔模式。#p#

  1. restore old backup        
  2. SQL> startup mount        
  3. SQL> recover database until cancel using backup controlfile;        
  4. SQL> alter database open resetlogs;    

 

3)如果數(shù)據(jù)庫是非歸檔模式,只能恢復(fù)整個物理備份,然后直接打開數(shù)據(jù)庫。這種情況將丟失物理備份至故障發(fā)生前的全部數(shù)據(jù)。

4)如果數(shù)據(jù)庫是非歸檔模式,且沒有物理備份,只能通過特殊的隱含參數(shù),允許數(shù)據(jù)庫不一致的狀況下打開數(shù)據(jù)庫。這種恢復(fù)方法是沒有辦法之后的恢復(fù)方法,將導(dǎo)致數(shù)據(jù)庫不一致,一般情況下不要采用。如確有需要,請?jiān)贠racle的技術(shù)人員指導(dǎo)下使用該方法。

  1. 關(guān)閉數(shù)據(jù)庫  
  2. SQL>shutdown immediate   
  3. 在init<sid>.ora中加入如下參數(shù)   
  4. _allow_resetlogs_corruption=TRUE   
  5. 重新啟動數(shù)據(jù)庫,利用until cancel恢復(fù)   
  6. SQL>recover database until cancel;   
  7. Cancel   
  8. 打開數(shù)據(jù)庫  
  9. SQL>alter database open resetlogs;   

 數(shù)據(jù)庫被打開后,馬上執(zhí)行一個全庫導(dǎo)出。
關(guān)閉數(shù)據(jù)庫,在init.ora中去掉_all_resetlogs_corrupt參數(shù)

【編輯推薦】

  1. 修改Oracle存儲過程所需代碼
  2. 對Oracle存儲過程的總結(jié)
  3. 實(shí)現(xiàn)Oracle存儲過程的實(shí)際應(yīng)用的代碼 
  4. 深入高性能的Oracle動態(tài)SQL開發(fā) 
  5. Oracle SQL的優(yōu)化規(guī)則解析 
責(zé)任編輯:佚名
相關(guān)推薦

2010-11-19 13:42:38

2010-10-29 14:29:55

Oracle移動重做日

2009-11-16 17:33:21

重做Oracle日志文

2011-08-03 18:42:21

Oracle數(shù)據(jù)庫重做日志

2023-03-31 17:33:06

Oracle數(shù)據(jù)庫

2011-05-24 10:26:12

Oracle數(shù)據(jù)庫日志文件

2010-10-29 15:26:29

Oracle日志文件

2011-04-12 10:42:41

Oracle日志文件管理

2021-02-19 18:06:57

Oracle日志聯(lián)機(jī)

2010-07-20 15:01:39

SQLServer日志

2010-04-20 12:09:31

Oracle數(shù)據(jù)庫

2010-10-29 13:55:48

Oracle日志文件

2010-04-12 14:25:04

Oracle備份

2010-04-22 15:34:16

Oracle海量數(shù)據(jù)

2010-04-06 10:11:11

Oracle備份

2010-05-06 09:42:28

Oracle表空間

2010-06-30 10:55:13

SQL Server日

2011-03-04 14:59:16

Raidoracle數(shù)據(jù)庫

2010-04-01 09:56:44

Oracle DECO

2023-08-25 09:39:38

數(shù)據(jù)庫Oracle
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號