我們今天要和大家一起討論的是Oracle備份,redo丟失和恢復的實際操作方案的實際應用,如果你對Oracle備份,redo丟失和恢復的實操感興趣的話,以下的文章就會給你提供相關的知識,望你會有所收獲。
一、先闡述下測試環境
系統數據庫環境:window+Oracle10g R2+archive模式;
模擬Redo文件丟失,數據庫在正常關閉的情況發現Redo丟失了;
二、測試
(1)、倘若丟了一個或多個redo組的一個成員。這種情況最好處理,直接copy其它目錄的成員,重新啟動數據庫即可。此種情況不作太多的說明;
(2)、倘若丟失的是一組或兩組甚至全部Redo日志丟失,則有以下三種方法可以恢復;
A、clear logfile方法(以下的測試均屬於是redo日志全部丟失的環境下)
1、關閉數據庫;
2、手動刪除所有redo文件;
3、啟動數據庫;
SQL> startup
Oracle 例程已經啟動。
- Total System Global Area 612368384 bytes
- Fixed Size 1250428 bytes
- Variable Size 255855492 bytes
- Database Buffers 348127232 bytes
- Redo Buffers 7135232 bytes
數據庫裝載完畢。
ORA-00313: 無法打開日志組 1 (用於線程 1) 的成員
ORA-00312: 聯機日志 1 線程 1:
'E:\Oracle\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG'
ORA-00312: 聯機日志 1 線程 1: 'F:\REDO\REDO01_B.LOG'
SQL>
4、查看當前日志狀態;
- 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;
數據庫已更改。
SQL>
6、繼續打開數據庫;
- SQL> alter database open;
- alter database open
- *
第 1 行出現錯誤:
ORA-00313: 無法打開日志組 2 (用於線程 1) 的成員
ORA-00312: 聯機日志 2線程 1:
'E:\Oracle\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG'
ORA-00312: 聯機日志 3 線程 1: 'F:\REDO\REDO02_B.LOG'
SQL>
- SQL> alter database clear logfile group 2;
- alter database clear logfile group 2*
第 1 行出現錯誤:
ORA-00350: 日志 2(實例 orcl 的日志, 線程 1) 需要歸檔
ORA-00312: 聯機日志 2 線程 1:
'E:\Oracle\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG'
ORA-00312: 聯機日志 2 線程 1: 'F:\REDO\REDO02_B.LOG'
報錯;因為group2是當前狀態;
此時只能從其它目錄copy有效Oracle備份。然後在alter database;
- SQL>alter database clear unarchived logfile group2;
數據庫已更改。
然後再重建Group 3,方法同重建 Group 1;
- SQL> alter database clear logfile group 3;
數據庫已更改。
- SQL> alter database open;
數據庫已更改。
注意:倘若沒有物理有效Oracle備份文件,數據庫則將無法打開;用clear logifle這種方法,對於處於CURRENT狀態的Redo,只能通過COPY有效的物理備份去打開數據庫,否則無法打開;