RMAN_資料庫的絕大部分資料檔案丟失或者損壞的恢復
- 簡述
當資料庫的多個表空間的檔案都遭到不同程度的損壞,我們直接在資料庫級進行恢復。本試驗測試是丟失資料檔案,控制檔案、REDO檔案等其他檔案沒有受到破壞。
本試驗中刪除絕大部分的資料檔案,模擬該大部分資料檔案物理破壞或者丟失的情況發生,也就是說,如果一個資料庫的絕大部分的資料檔案丟失了,可以參照下面的操作步驟進行資料庫庫的恢復工作。
2. 建立測試環境
2.1在測試表空間上建立表
SQL> CREATE TABLE AIDU.TEST_FOR_RECOVERY_DB(ID NUMBER NOT NULL,NAME VARCHAR2(200),PRIMARY KEY(ID)) TABLESPACE USER02;
表已建立。
2.2 做一次RMAN全備份
C:> RMAN TARGET /
RMAN>RUN{
SQL ‘ALTER SYSTEM ARCHIVE LOG CURRENT’;
ALLOCATE CHANNEL D1 TYPE DISK;
BACKUP FULL DATABASE PLUS ARCHIVELOG;
RELEASE CHANNEL D1;}
2.3 在測試表中插入資料,用於驗證資料是否完全恢復
SQL> CONN AIDU/AIDU
已連線。
SQL> INSERT INTO TEST_FOR_RECOVERY_DB VALUES(1,'TEST FOR RECOVERY DATABASE');
已建立 1 行。
SQL> COMMIT;
提交完成。
SQL> CONN / AS SYSDBA
已連線。
SQL> ALTER SYSTEM SWITCH LOGFILE;
系統已更改。
3. 模擬災難恢復
SQL>SHUTDOWN IMMEDIATE;
SQL>HOST DEL C:\ORADATA\AIDU\SYS*.*
SQL>HOST DEL C:\ORADATA\AIDU\US*.*
SQL>HOST DEL C:\ORADATA\AIDU\IN*.*
SQL>HOST DEL C:\ORADATA\AIDU\UN*.*
SQL>HOST DEL C:\ORADATA\AIDU\TE*.*
實際上只保留了資料庫資料目錄下的REDO檔案,控制檔案。
SQL>STARTUP
ORACLE 例程已經啟動。
Total System Global Area 268435456 bytes
Fixed Size 1248504 bytes
Variable Size 100664072 bytes
Database Buffers 163577856 bytes
Redo Buffers 2945024 bytes
資料庫裝載完畢。
ORA-01157: 無法標識/鎖定資料檔案 1 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 1: 'C:\ORADATA\AIDU\SYSTEM01.DBF'
資料庫無法啟動
4.進行災難恢復
4.1 檢視當前資料庫狀態
SQL> SELECT OPEN_MODE FROM V$DATABASE;
OPEN_MODE
----------
MOUNTED
SQL>COL NAME FORMAT A30
SQL>COL ERROR FORMAT A30
SQL>COL FILE# FORMAT 99
SQL> SELECT A.FILE#,A.NAME,B.ERROR FROM V$DATAFILE A,V$RECOVER_FILE B
2 WHERE A.FILE#=B.FILE#;
FILE# NAME ERROR
----- ------------------------------ ------------------------------
1 C:\ORADATA\AIDU\SYSTEM01.DBF FILE NOT FOUND
2 C:\ORADATA\AIDU\USER02.DBF FILE NOT FOUND
3 C:\ORADATA\AIDU\SYSAUX01.DBF FILE NOT FOUND
4 C:\ORADATA\AIDU\USERS01.DBF FILE NOT FOUND
5 C:\ORADATA\AIDU\INDX01.DBF FILE NOT FOUND
6 C:\ORADATA\AIDU\INDX02.DBF FILE NOT FOUND
7 C:\ORADATA\AIDU\UNDO2.ORA FILE NOT FOUND
8 C:\ORADATA\AIDU\USER02B.ORA FILE NOT FOUND
已選擇8行。
這裡看到有8個檔案需要進行恢復。
4.2使用RMAN進行恢復
RMAN> run{
2> RESTORE DATABASE;
3> RECOVER DATABASE;
4> SQL 'ALTER DATABASE OPEN';}
啟動 restore 於 2006-07-11 11:25:46
使用目標資料庫控制檔案替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=46 devtype=DISK
通道 ORA_DISK_1: 正在開始恢復資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集恢復的資料檔案
正將資料檔案00001恢復到C:\ORADATA\AIDU\SYSTEM01.DBF
正將資料檔案00002恢復到C:\ORADATA\AIDU\USER02.DBF
正將資料檔案00003恢復到C:\ORADATA\AIDU\SYSAUX01.DBF
正將資料檔案00004恢復到C:\ORADATA\AIDU\USERS01.DBF
正將資料檔案00005恢復到C:\ORADATA\AIDU\INDX01.DBF
正將資料檔案00006恢復到C:\ORADATA\AIDU\INDX02.DBF
正將資料檔案00007恢復到C:\ORADATA\AIDU\UNDO2.ORA
正將資料檔案00008恢復到C:\ORADATA\AIDU\USER02B.ORA
通道 ORA_DISK_1: 正在讀取備份段 C:\ORADATA\FLASH_RECOVERY_AREA\AIDU\BACKUPSET\2006_07_11\O1_MF_NNNDF_TAG20060711T094614_2C60Q8F5_.BKP
通道 ORA_DISK_1: 已恢復備份段 1
段控制程式碼 = C:\ORADATA\FLASH_RECOVERY_AREA\AIDU\BACKUPSET\2006_07_11\O1_MF_NNNDF_TAG20060711T094614_2C60Q8F5_.BKP 標記 = TAG20060711T094614
通道 ORA_DISK_1: 恢復完成, 用時: 00:01:15
完成 restore 於 2006-07-11 11:27:04
啟動 recover 於 2006-07-11 11:27:04
使用通道 ORA_DISK_1
正在開始介質的恢復
存檔日誌執行緒 1 序列 25 已作為檔案 C:\ORADATA\FLASH_RECOVERY_AREA\AIDU\ARCHIVELOG\2006_07_11\O1_MF_1_25_2C60S8NJ_.ARC 存在於磁碟上
存檔日誌執行緒 1 序列 26 已作為檔案 C:\ORADATA\FLASH_RECOVERY_AREA\AIDU\ARCHIVELOG\2006_07_11\O1_MF_1_26_2C60WK00_.ARC 存在於磁碟上
存檔日誌執行緒 1 序列 27 已作為檔案 C:\ORADATA\FLASH_RECOVERY_AREA\AIDU\ARCHIVELOG\2006_07_11\O1_MF_1_27_2C65YXJ3_.ARC 存在於磁碟上
存檔日誌檔名 =C:\ORADATA\FLASH_RECOVERY_AREA\AIDU\ARCHIVELOG\2006_07_11\O1_MF_1_25_2C60S8NJ_.ARC 執行緒 =1 序列 =25
介質恢復完成, 用時: 00:00:09
完成 recover 於 2006-07-11 11:27:17
sql 語句: ALTER DATABASE OPEN
4.3 檢查資料是否正常恢復
SQL> COL NAME FORMAT A30
SQL> SELECT * FROM TEST_FOR_RECOVERY_DB;
ID NAME
---------- ------------------------------
1 TEST FOR RECOVERY DATABASE
SQL> COL FILE# FORMAT 99
SQL> COL NAME FORMAT A30
SQL> COL STATUS FORMAT A10
SQL> SELECT FILE#,NAME,STATUS FROM V$DATAFILE ORDER BY FILE#;
FILE# NAME STATUS
----- ------------------------------ ----------
1 C:\ORADATA\AIDU\SYSTEM01.DBF SYSTEM
2 C:\ORADATA\AIDU\USER02.DBF ONLINE
3 C:\ORADATA\AIDU\SYSAUX01.DBF ONLINE
4 C:\ORADATA\AIDU\USERS01.DBF ONLINE
5 C:\ORADATA\AIDU\INDX01.DBF ONLINE
6 C:\ORADATA\AIDU\INDX02.DBF ONLINE
7 C:\ORADATA\AIDU\UNDO2.ORA ONLINE
8 C:\ORADATA\AIDU\USER02B.ORA ONLINE
已選擇8行。
SQL> SELECT FILE#,NAME,STATUS FROM V$TEMPFILE ORDER BY FILE#;
FILE# NAME STATUS
----- ------------------------------ ----------
2 C:\ORADATA\AIDU\TEMP02.DBF ONLINE
我們可以看到TEMP 表空間的檔案自動恢復了,請注意這些檔案並不是從RMAN備份集中恢復回來的,而是系統自動建立的。這次測試的環境是10.2.0.1,TEMP表空間的檔案可以自動重新建立,如果是10.2之前的版本,可能需要手工建立一下。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/32980/viewspace-673803/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- RMAN_部分資料檔案丟失或者損壞的恢復
- 資料檔案丟失損壞的恢復--
- REDO檔案丟失或者損壞的恢復
- rman 恢復---歸檔丟失and資料檔案損壞
- 磁碟損壞導致資料檔案丟失的恢復
- Recovery from missing or corrupted datafile(多個資料檔案丟失或者損壞的恢復)
- 備份與恢復--資料檔案損壞或丟失
- 資料檔案損壞、丟失
- INDEX表空間檔案丟失或者損壞的恢復Index
- 【資料庫資料恢復】MongoDB資料庫檔案損壞的資料恢復案例資料庫資料恢復MongoDB
- 資料檔案丟失的恢復
- 【北亞資料恢復】誤操作分割槽損壞導致SqlServer資料庫資料丟失的資料恢復資料恢復SQLServer資料庫
- 【資料庫資料恢復】Sql Server資料庫檔案丟失的資料恢復過程資料庫資料恢復SQLServer
- Oracle不同檔案丟失/損壞的恢復方法Oracle
- 資料庫資料恢復—MongoDB資料庫檔案丟失,啟動報錯的資料恢復案例資料庫資料恢復MongoDB
- Sql Server資料庫檔案丟失的恢復方法SQLServer資料庫
- u盤檔案損壞怎麼恢復資料 u盤恢復損壞資料的有效方法
- 資料檔案丟失如何恢復
- 資料檔案或者tablespace損壞基於rman恢復測試
- RMAN完全恢復丟失的資料檔案
- 普通資料檔案丟失的恢復方法
- 備份&恢復之八:RMAN備份歸檔模式下損壞(丟失)多個資料檔案,進行整個資料庫的恢復模式資料庫
- MongoDB資料庫報錯,資料庫檔案丟失資料恢復案例MongoDB資料庫資料恢復
- 【資料庫資料恢復】mdb_catalog.wt檔案丟失的MongoDB資料恢復案例資料庫資料恢復MongoDB
- 完全恢復之所有資料庫檔案丟失資料庫
- 資料庫各種檔案丟失恢復大全。資料庫
- [ORACLE] 系統故障資料庫恢復--資料檔案無損壞Oracle資料庫
- 磁碟損壞,system及部分資料檔案丟失
- DATA GUARD主庫丟失資料檔案的恢復(2)
- DATA GUARD主庫丟失資料檔案的恢復(3)
- DATA GUARD主庫丟失資料檔案的恢復(1)
- 備份&恢復之五:歸檔模式下丟失或損壞一個資料檔案模式
- RMAN資料庫恢復 之歸檔模式有(無)備份-丟失資料檔案的恢復資料庫模式
- coreldraw檔案丟失(損壞)的恢復處理辦法
- 電腦檔案丟失資料恢復資料恢復
- 歸檔模式下資料檔案丟失的恢復模式
- Oracle備份與恢復【丟失資料檔案的恢復】Oracle
- RMAN恢復案例:丟失全部資料檔案恢復