IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置: 首頁(yè)數(shù)據(jù)庫(kù)Oracle → Oracle重做日志丟失的故障處理

Oracle重做日志丟失的故障處理

時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)

  Oracle重做日志

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

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

  如果數(shù)據(jù)庫(kù)在啟動(dòng)時(shí)檢測(cè)到重做日志丟失,數(shù)據(jù)庫(kù)將無(wú)法啟動(dòng)。如果數(shù)據(jù)庫(kù)在運(yùn)行時(shí)切換日志文件組,檢測(cè)到下一組或者全部的重做日志丟失,數(shù)據(jù)庫(kù)將會(huì)崩潰。由于磁盤介質(zhì)損壞或者人為的誤刪除文件,造成嚴(yán)重后果的事件近期時(shí)有發(fā)生。本文列舉了重做日志丟失的數(shù)據(jù)庫(kù)恢復(fù),但如果按照冗余原則合理分布日志文件組的成員,如果工程師了解日志文件的基本原理和使用原則,就完全可以避免出現(xiàn)下列問(wèn)題。

  恢復(fù)方法

  故障現(xiàn)象

  SQL> startup mount

  Oracle Instance Started

  Database mounted

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

  ORA-00312: online log 1 thread 1: '/ORACLE/ORADATA/H817/REDO01.LOG'

  ORA-27041: unable to open file

  OSD-04002: unable to open file

  O/S-Error: (OS 2) The system cannot find the file specified.

  恢復(fù)注意事項(xiàng)

  以下所列舉的恢復(fù)方法,都屬于不完全恢復(fù)或者強(qiáng)制恢復(fù),會(huì)丟失當(dāng)前重做日志中的事務(wù)數(shù)據(jù)。一旦操作不當(dāng),將帶來(lái)數(shù)據(jù)丟失等嚴(yán)重后果,請(qǐng)遵循以下幾個(gè)恢復(fù)原則:

  1.? 請(qǐng)勿在生產(chǎn)系統(tǒng)上試用。

  2.? 如果生產(chǎn)系統(tǒng)出現(xiàn)重做日志文件丟失的故障,請(qǐng)勿自行操作破壞現(xiàn)場(chǎng),應(yīng)該立刻聯(lián)系Oracle工程師。

  3.? 恢復(fù)成功之后,需要馬上做一次數(shù)據(jù)庫(kù)的全備份。

  4.? 建議重做日志文件一定要實(shí)現(xiàn)鏡象在不同的磁盤上,避免這種情況的發(fā)生。

  恢復(fù)方法

  1.? 首先檢查重做日志文件狀態(tài),看看報(bào)錯(cuò)的日志文件的狀態(tài)是否為Current

  SQL> select * from v$log;

  SQL> select * from v$logfile;

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

  SQL> alter database clear logfile '/ORACLE/ORADATA/H817/REDO01.LOG';

  3.? 如果重做日志文件狀態(tài)為Current,恢復(fù)工作較為復(fù)雜,有以下四種情況:

  1)通過(guò)下面步驟,數(shù)據(jù)庫(kù)順利打開

  SQL> recover database until cancel;

  Type Cancel when prompted

  SQL>alter database open resetlogs;

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

  restore old backup

  SQL> startup mount

  SQL> recover database until cancel using backup controlfile;

  SQL> alter database open resetlogs;

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

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

  ?? 關(guān)閉數(shù)據(jù)庫(kù)

  SQL>shutdown immediate

  ?? 在init.ora中加入如下參數(shù)

  _allow_resetlogs_corruption=TRUE

  ?? 重新啟動(dòng)數(shù)據(jù)庫(kù),利用until cancel恢復(fù)

  SQL>recover database until cancel;

  Cancel

  ?? 打開數(shù)據(jù)庫(kù)

  SQL>alter database open resetlogs;

  ?? 數(shù)據(jù)庫(kù)被打開后,馬上執(zhí)行一個(gè)全庫(kù)導(dǎo)出。

  關(guān)閉數(shù)據(jù)庫(kù),在init.ora中去掉_all_resetlogs_corrupt參數(shù)

  if ($ != jQuery) { $ = jQuery.noConflict(); }

關(guān)鍵詞標(biāo)簽:Oracle

相關(guān)閱讀

文章評(píng)論
發(fā)表評(píng)論

熱門文章 Oracle中使用alter table來(lái)增加,刪除,修改列的語(yǔ)法 Oracle中使用alter table來(lái)增加,刪除,修改列的語(yǔ)法 oracle中使用SQL語(yǔ)句修改字段類型-oracle修改SQL語(yǔ)句案例 oracle中使用SQL語(yǔ)句修改字段類型-oracle修改SQL語(yǔ)句案例 誤刪Oracle數(shù)據(jù)庫(kù)實(shí)例的控制文件 誤刪Oracle數(shù)據(jù)庫(kù)實(shí)例的控制文件 為UNIX服務(wù)器設(shè)置Oracle全文檢索 為UNIX服務(wù)器設(shè)置Oracle全文檢索

相關(guān)下載

    人氣排行 oracle中使用SQL語(yǔ)句修改字段類型-oracle修改SQL語(yǔ)句案例 Oracle中使用alter table來(lái)增加,刪除,修改列的語(yǔ)法 ORACLE SQL 判斷字符串是否為數(shù)字的語(yǔ)句 ORACLE和SQL語(yǔ)法區(qū)別歸納(1) oracle grant 授權(quán)語(yǔ)句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數(shù)據(jù)處理 Oracle刪除表的幾種方法