RMAN_部分資料檔案丟失或者損壞的恢復

djb1008發表於2010-09-14
  1. 簡述

當個別資料庫的資料檔案丟失或者損壞,則需要首先恢復該檔案的備份複本,然後運用歸檔日誌和REDO檔案進行完整恢復,使得最後丟失或者損壞的資料檔案的SCN等於當前的SCN,這樣資料庫可以正常開啟,資料沒有丟失。

[@more@]

  1. 建立測試環境

2.1 建立測試表空間

SQL>CREATE TABLESPACE "USER02" DATAFILE 'C:ORADATAAIDUUSER02.DBF' SIZE 20M REUSE LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;

2.2 在測試表空間上建立資料庫表

SQL>create table aidu.test_for_recovery(id number not null,name varchar2(200),primary key(id)) tablespace user02;

SQL> select table_name,tablespace_name from all_tables where table_name='TEST_FOR_RECOVERY';

TABLE_NAME TABLESPACE_NAME

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

TEST_FOR_RECOVERY USER02

2.3做一次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.4 在測試表中插入資料,用於驗證資料是否完整恢復

SQL>CONN AIDU/AIDU

SQL>INSERT INTO TEST_FOR_RECOVERY(1,’AFTER_RMAN_BAK’);

SQL>COMMIT;

  1. 模擬災難發生

SQL>SHUTDOWN IMMEDIATE;

SQL>HOST DEL C:ORADATAAIDUUSER02.DBF; #刪除USER02表空間的一個檔案

SQL>STARTUP

ORACLE 例程已經啟動。

Total System Global Area 268435456 bytes

Fixed Size 1248504 bytes

Variable Size 92275464 bytes

Database Buffers 171966464 bytes

Redo Buffers 2945024 bytes

資料庫裝載完畢。

ORA-01157: 無法標識/鎖定資料檔案 2 - 請參閱 DBWR 跟蹤檔案

ORA-01110: 資料檔案 2: 'C:ORADATAAIDUUSER02.DBF'

  1. 進行災難恢復

4.1 檢視當前資料庫狀態

SQL> SELECT OPEN_MODE FROM V$DATABASE;

OPEN_MODE

----------

MOUNTED

4.2 使用RMAN進行恢復

這個試驗裡,RMAN備份集的目錄是使用預設的備份與恢復目錄(C:oradataflash_recovery_area)。如果不想放在預設的目錄可以指定備份的路徑。例如:

ALLOCATE CHANNEL D1 TYPE DISK FORMAT C:ORABAK;

C:>RMAN TARGET /

RMAN> RUN{

2> ALLOCATE CHANNEL D1 TYPE DISK;

3> RESTORE DATAFILE 2;

4> RECOVER DATABASE;

5> SQL 'ALTER DATABASE OPEN';

6> RELEASE CHANNEL D1;}

使用目標資料庫控制檔案替代恢復目錄

分配的通道: D1

通道 D1: sid=46 devtype=DISK

啟動 restore 2006-07-10 17:26:03

通道 D1: 正在開始恢復資料檔案備份集

通道 D1: 正在指定從備份集恢復的資料檔案

正將資料檔案00002恢復到C:ORADATAAIDUUSER02.DBF

通道 D1: 正在讀取備份段 C:ORADATAFLASH_RECOVERY_AREAAIDUBACKUPSET2006_07_10O1_MF_NNNDF_TAG20060710T171655_2C46R8M2_.BKP

通道 D1: 已恢復備份段 1段控制程式碼 = C:ORADATAFLASH_RECOVERY_AREAAIDUBACKUPSET2006_07_10O1_MF_NNNDF_TAG20060710T171655_2C46R8M2_.BKP 標記 = TAG20060710T171655

通道 D1: 恢復完成, 用時: 00:00:08完成 restore 2006-07-10 17:26:13

啟動 recover 2006-07-10 17:26:14

正在開始介質的恢復

介質恢復完成, 用時: 00:00:01

完成 recover 2006-07-10 17:26:18

sql 語句: ALTER DATABASE OPEN

釋放的通道: D1

4.5 檢查資料是否正常恢復

SQL>CONN AIDU/AIDU

SQL> SELECT * FROM TEST_FOR_RECOVERY;

ID NAME

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

1 after_rman_backup

我們可以看到資料完全恢復了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/32980/viewspace-1038307/,如需轉載,請註明出處,否則將追究法律責任。

相關文章