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

您當(dāng)前所在位置:首頁數(shù)據(jù)庫Oracle → oracle備份--redo丟失與恢復(fù)

oracle備份--redo丟失與恢復(fù)

時間:2015/6/28來源:IT貓撲網(wǎng)作者:網(wǎng)管聯(lián)盟我要評論(0)

  一、先闡述下測試環(huán)境

  系統(tǒng)數(shù)據(jù)庫環(huán)境:window+oracle10g R2+archive模式;

  模擬Redo文件丟失,數(shù)據(jù)庫在正常關(guān)閉的情況發(fā)現(xiàn)Redo丟失了;

  二、測試

 。1)、倘若丟了一個或多個redo組的一個成員。這種情況最好處理,直接copy其它目錄的成員,重新啟動數(shù)據(jù)庫即可。此種情況不作太多的說明;

 。2)、倘若丟失的是一組或兩組甚至全部Redo日志丟失,則有以下三種方法可以恢復(fù);

  A、clear logfile方法(以下的測試均屬于是redo日志全部丟失的環(huán)境下)

  1、關(guān)閉數(shù)據(jù)庫;

  2、手動刪除所有redo文件;

  3、啟動數(shù)據(jù)庫;

  SQL> startup

  ORACLE 例程已經(jīng)啟動。

  Total System Global Area  612368384 bytes

  Fixed Size      1250428 bytes

  Variable Size 255855492 bytes

  Database Buffers    348127232 bytes

  Redo Buffers    7135232 bytes

  數(shù)據(jù)庫裝載完畢。

  ORA-00313: 無法打開日志組 1 (用于線程 1) 的成員

  ORA-00312: 聯(lián)機(jī)日志 1 線程 1:

  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG'

  ORA-00312: 聯(lián)機(jī)日志 1 線程 1: 'F:\REDO\REDO01_B.LOG'

  SQL>

  4、查看當(dāng)前日志狀態(tài);

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

  GROUP#    MEMBERS ARC STATUS

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

  1    2 YES INACTIVE

  2    2 NO  CURRENT

  3    2 YES INACTIVE

  SQL>

  5、clear生成非當(dāng)前的日志;

  SQL>alter database clear logfile group1;

  數(shù)據(jù)庫已更改。

  SQL>

  6、繼續(xù)打開數(shù)據(jù)庫;

  SQL> alter database open;

  alter database open

  *

  第 1 行出現(xiàn)錯誤:

  ORA-00313: 無法打開日志組 2 (用于線程 1) 的成員

  ORA-00312: 聯(lián)機(jī)日志 2線程 1:

  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG'

  ORA-00312: 聯(lián)機(jī)日志 3 線程 1: 'F:\REDO\REDO02_B.LOG'

  SQL>

  SQL> alter database clear logfile group 2;

  alter database clear logfile group 2*

  第 1 行出現(xiàn)錯誤:

  ORA-00350: 日志 2(實(shí)例 orcl 的日志, 線程 1) 需要?dú)w檔

  ORA-00312: 聯(lián)機(jī)日志 2 線程 1:

  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG'

  ORA-00312: 聯(lián)機(jī)日志 2 線程 1: 'F:\REDO\REDO02_B.LOG'

  報(bào)錯;因?yàn)間roup2是當(dāng)前狀態(tài);

  此時只能從其它目錄copy有效備份。然后在alter database;

  SQL>alter database clear unarchived logfile group2;

  數(shù)據(jù)庫已更改。

  然后再重建Group 3,方法同重建 Group 1;

  SQL> alter database clear logfile group 3;

  數(shù)據(jù)庫已更改。

  SQL> alter database open;

  數(shù)據(jù)庫已更改。

  注意:倘若沒有物理有效備份文件,數(shù)據(jù)庫則將無法打開;用clear logifle這種方法,對于處于CURRENT狀態(tài)的Redo,只能通過COPY有效的物理備份去打開數(shù)據(jù)庫,否則無法打開;

#p#副標(biāo)題#e#

  B、Resetlogs打開恢復(fù)方法

  1、關(guān)閉數(shù)據(jù)庫;

  2、手動刪除所有redo文件;

  3、啟動數(shù)據(jù)庫;

  SQL> startup

  ORACLE 例程已經(jīng)啟動。

  Total System Global Area  612368384 bytes

  Fixed Size      1250428 bytes

  Variable Size 276827012 bytes

  Database Buffers    327155712 bytes

  Redo Buffers    7135232 bytes

  數(shù)據(jù)庫裝載完畢。

  ORA-00313: 無法打開日志組 1 (用于線程 1) 的成員

  ORA-00312: 聯(lián)機(jī)日志 1 線程 1:

  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG'

  ORA-00312: 聯(lián)機(jī)日志 1 線程 1: 'F:\REDO\REDO01_B.LOG'

  4、使用Recover database until cancel;

  SQL> recover database until cancel;

  完成介質(zhì)恢復(fù)。

  此時還是無法打開數(shù)據(jù)庫;

  SQL> alter database open;

  alter database open

  *

  第 1 行出現(xiàn)錯誤:

  ORA-01589: 要打開數(shù)據(jù)庫則必須使用 RESETLOGS 或 NORESETLOGS 選項(xiàng)

  5、通過RESETLOGS打開數(shù)據(jù)庫:

  SQL>alter database open resetlogs;

  數(shù)據(jù)庫已更改。

  此種方法應(yīng)該可以說超越clear logfile了,在沒有數(shù)據(jù)庫冷備份數(shù)據(jù)文件的前提下,可以考慮此種方法。但是要注意的是:

  通過NORESETLOGS選項(xiàng)是無法正常打開數(shù)據(jù)庫的。通過此種方法恢復(fù)數(shù)據(jù)庫建議恢復(fù)之后必須立即做個全備份。因?yàn)閞esetlogs已經(jīng)清除了所有的日志序列。

  C、通過重建控制文件恢復(fù)redo

  1、關(guān)閉數(shù)據(jù)庫;

  2、手動刪除所有redo文件;

  3、啟動數(shù)據(jù)庫;

  SQL> startup

  ORACLE 例程已經(jīng)啟動。

  Total System Global Area  612368384 bytes

  Fixed Size      1250428 bytes

  Variable Size 276827012 bytes

  Database Buffers    327155712 bytes

  Redo Buffers    7135232 bytes

  數(shù)據(jù)庫裝載完畢。

  ORA-00313: 無法打開日志組 1 (用于線程 1) 的成員

  ORA-00312: 聯(lián)機(jī)日志 1 線程 1:

  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG'

  ORA-00312: 聯(lián)機(jī)日志 1 線程 1: 'F:\REDO\REDO01_B.LOG'、

  4、獲得重建控制文件腳本:

  SQL>alter database backup controlfile to trace;

  數(shù)據(jù)庫已更改。

  SQL>@?/rdbms/admin/gettrcname.sql;

  TRACE_FILE_NAME

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

  E:\ORACLE\PRODUCT\10.2.0\ADMIN\ORCL\UDUMP/orcl_ora_1136.trc

  編輯以上文件就可以獲得重建控制文件的腳本了。

  5、運(yùn)行生成的生成控制文件的腳本:

  SQL> STARTUP NOMOUNT

  ORACLE 例程已經(jīng)啟動。

  Total System Global Area  612368384 bytes

  Fixed Size      1250428 bytes

  Variable Size 281021316 bytes

  Database Buffers    322961408 bytes

  Redo Buffers    7135232 bytes

#p#副標(biāo)題#e#

  SQL> CREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS  ARCHIVELOG

  2      MAXLOGFILES 16

  3      MAXLOGMEMBERS 3

  4      MAXDATAFILES 100

  5      MAXINSTANCES 8

  6      MAXLOGHISTORY 292

  7  LOGFILE

  8    GROUP 1 (

  9      'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG',

  10      'F:\REDO\REDO01_B.LOG'

  11    ) SIZE 50M,

  12&nb

關(guān)鍵詞標(biāo)簽:oracle備份

相關(guān)閱讀

文章評論
發(fā)表評論

熱門文章 Oracle中使用alter table來增加,刪除,修改列Oracle中使用alter table來增加,刪除,修改列oracle中使用SQL語句修改字段類型-oracle修oracle中使用SQL語句修改字段類型-oracle修使用低權(quán)限Oracle數(shù)據(jù)庫賬戶得到管理員權(quán)限使用低權(quán)限Oracle數(shù)據(jù)庫賬戶得到管理員權(quán)限Oracle對user的訪問控制Oracle對user的訪問控制

相關(guān)下載

人氣排行 ORACLE SQL 判斷字符串是否為數(shù)字的語句Oracle中使用alter table來增加,刪除,修改列的語法ORACLE和SQL語法區(qū)別歸納(1)oracle grant 授權(quán)語句如何加速Oracle大批量數(shù)據(jù)處理Oracle刪除表的幾種方法ORACLE修改IP地址后如何能夠使用Oracle 10g創(chuàng)建表空間和用戶并指定權(quán)限