RMAN資料庫恢復 之歸檔模式有(無)備份-丟失資料檔案的恢復

weixin_34377065發表於2014-12-24

1、歸檔模式有備份,丟失資料檔案的恢復
歸檔模式有備份,不管丟失什麼資料檔案,直接在RMAN下RESTOER--->RECOVER--->OPEN即可。

RMAN> STARUP MOUNT;

RMAN> RESTORE DATAFILE 5; --恢復丟失的資料檔案,序號為5;

RMAN> RECOVER DATAFILE 5; --應用歸檔檔案,聯機重做日誌檔案執行資料庫修復,將資料檔案恢復到最近時間點(就是應用備份後到資料檔案 
丟失前的那些更改,以保持資料庫的一致性狀態)

RMAN> ALTER DATABASE OPEN;

2、歸檔模式無備份,丟失資料檔案的恢復
說明:如果丟失的是SYSTEM表空間中的資料檔案,則必須要有備份,否則無法恢復。如果丟失的是臨時表空間,則不需要恢復,重建一個就可以了。如果丟失的是其它表空間的資料檔案,從其建立時刻起所有的重做日誌檔案都還在,因此只需要重建該資料檔案後,通過RECOVER應用重做日誌,重建該資料檔案的內容即可。
2.1 非RMAN模式恢復(使用者管理和備份方式)

準備測試資料:

SQL> CREATE TABLESPACE TEST DATAFILE 'D:\TEST\test01.dbf' size 10M;
表空間已建立。

SQL> CREATE USER TEST IDENTIFIED BY TEST DEFAULT TABLESPACE TEST QUOTA UNLIMITED ON TEST;
使用者已建立。

SQL> GRANT CONNECT,RESOURCE TO TEST;
授權成功。

SQL> create table test(id number(2), name varchar2(4));
表已建立。

SQL> insert into test values(1,'NM1');
已建立 1 行。

SQL> insert into test values(2,'NM2');
已建立 1 行。

SQL> insert into test values(3,'NM3');
已建立 1 行。

SQL> COMMIT;
提交完成。

SQL> SELECT * FROM TEST;
ID NAME
---------- ----
1 NM1
2 NM2
3 NM3

--以SYS連線,修改資料檔案為offline,刪除test01.dbf,並執行資料檔案恢復

SQL> alter database datafile 'D:\TEST\test01.dbf' offline;
資料庫已更改。

SQL> host del D:\TEST\test01.dbf

SQL> alter database create datafile 'D:\TEST\TEST01.DBF';
資料庫已更改。
(如果是原路徑無法訪問,可在建立資料檔案時指定新的路徑:alter database create datafile 'E:\TEST\TEST01.DBF' as 'D:\TEST 
\TEST01.DBF';)
SQL> recover datafile 'D:\TEST\TEST01.DBF';
完成介質恢復。

SQL> conn TEST/TEST@ORCL;
已連線。

--以sys連線例項,修改資料檔案狀態為ONLINE:
SQL> ALTER DATABASE DATAFILE 'D:\TEST\TEST01.DBF' ONLINE;
資料庫已更改。

SQL> conn TEST/TEST@ORCL;
已連線。
------------------檢視資料,已恢復。
SQL> SELECT * FROM TEST;
ID NAME
---------- ----
1 NM1
2 NM2
3 NM3

2.2 在RMAN模式下恢復
與使用者管理的備份和恢復模式相比,只多了一步連線RMAN的操作。

C:\Users\Administrator>rman catalog RMANCT/RMANCT@ORCL;

恢復管理器: Release 11.2.0.1.0 - Production on 星期三 12月 24 22:05:29 2014

Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

連線到恢復目錄資料庫

RMAN> CONNECT TARGET /

連線到目標資料庫: ORCL (DBID=1392118573)

-----------------------------------------------------------------------------
同樣將資料檔案置於OFFLINE,刪除資料檔案,RESTORE,再RECOVER,置資料檔案為ONLINE即可。

SQL> alter database datafile 'D:\TEST\TEST01.DBF' offline;

資料庫已更改。

SQL> host del D:\TEST\TEST01.DBF

RMAN> restore datafile 'D:\TEST\TEST01.DBF';

啟動 restore24-12月-14
在恢復目錄中註冊的資料庫的新原型
正在啟動全部恢復目錄的 resync
完成全部 resync
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=178 裝置型別=DISK

建立資料檔案, 檔案號 = 8 名稱 = D:\TEST\TEST01.DBF
沒有完成還原; 所有檔案均為只讀或離線檔案或者已經還原
完成 restore24-12月-14
正在啟動全部恢復目錄的 resync
完成全部 resync

RMAN> recover datafile 'D:\TEST\TEST01.DBF';

啟動 recover 於 24-12月-14
使用通道 ORA_DISK_1

正在開始介質的恢復
介質恢復完成, 用時: 00:00:01

完成 recover 於 24-12月-14

SQL> alter database datafile 'D:\TEST\TEST01.DBF' online;

資料庫已更改。

SQL> CONN TEST/TEST@ORCL;
已連線。
SQL> SELECT * FROM TEST;

ID NAME
---------- ----
1 NM1
2 NM2
3 NM3

 

相關文章