時間:2015-06-28 00:00:00 來源: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丟失了;
二、測試
?。?)、倘若丟了一個或多個redo組的一個成員。這種情況最好處理,直接copy其它目錄的成員,重新啟動數(shù)據(jù)庫即可。此種情況不作太多的說明;
?。?)、倘若丟失的是一組或兩組甚至全部Redo日志丟失,則有以下三種方法可以恢復;
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)機日志 1 線程 1:
'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG'
ORA-00312: 聯(lián)機日志 1 線程 1: 'F:\REDO\REDO01_B.LOG'
SQL>
4、查看當前日志狀態(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生成非當前的日志;
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)機日志 2線程 1:
'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG'
ORA-00312: 聯(lián)機日志 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(實例 orcl 的日志, 線程 1) 需要歸檔
ORA-00312: 聯(lián)機日志 2 線程 1:
'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG'
ORA-00312: 聯(lián)機日志 2 線程 1: 'F:\REDO\REDO02_B.LOG'
報錯;因為group2是當前狀態(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#副標題#e#
B、Resetlogs打開恢復方法
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)機日志 1 線程 1:
'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG'
ORA-00312: 聯(lián)機日志 1 線程 1: 'F:\REDO\REDO01_B.LOG'
4、使用Recover database until cancel;
SQL> recover database until cancel;
完成介質(zhì)恢復。
此時還是無法打開數(shù)據(jù)庫;
SQL> alter database open;
alter database open
*
第 1 行出現(xiàn)錯誤:
ORA-01589: 要打開數(shù)據(jù)庫則必須使用 RESETLOGS 或 NORESETLOGS 選項
5、通過RESETLOGS打開數(shù)據(jù)庫:
SQL>alter database open resetlogs;
數(shù)據(jù)庫已更改。
此種方法應該可以說超越clear logfile了,在沒有數(shù)據(jù)庫冷備份數(shù)據(jù)文件的前提下,可以考慮此種方法。但是要注意的是:
通過NORESETLOGS選項是無法正常打開數(shù)據(jù)庫的。通過此種方法恢復數(shù)據(jù)庫建議恢復之后必須立即做個全備份。因為resetlogs已經(jīng)清除了所有的日志序列。
C、通過重建控制文件恢復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)機日志 1 線程 1:
'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG'
ORA-00312: 聯(lián)機日志 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、運行生成的生成控制文件的腳本:
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#副標題#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)鍵詞標簽:oracle備份
相關(guān)閱讀
熱門文章 Oracle中使用alter table來增加,刪除,修改列的語法 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 誤刪Oracle數(shù)據(jù)庫實例的控制文件 為UNIX服務器設置Oracle全文檢索
人氣排行 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 Oracle中使用alter table來增加,刪除,修改列的語法 ORACLE SQL 判斷字符串是否為數(shù)字的語句 ORACLE和SQL語法區(qū)別歸納(1) oracle grant 授權(quán)語句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數(shù)據(jù)處理 Oracle刪除表的幾種方法