130506rman恢復測試,四種場景

1.        非系統表空間損壞,而控制文件和聯機日誌文件沒有損壞

這是如果數據庫爲打開狀態,則只需要進行表空間級別的恢復,如下所示,假設users表空間損壞

 

SQL> SELECT * FROM DBA_DATA_FILES;
 
FILE_NAME                                                                          FILE_ID TABLESPACE_NAME                     BYTES     BLOCKS STATUS    RELATIVE_FNO AUTOEXTENSIBLE   MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS ONLINE_STATUS
------------------------------------------------------------------------------------------ ------------------------------ ---------- ---------- --------------------- -------------- ---------- ---------- ------------ --------------------- -------------
D:\APP\CALVIN\ORADATA\TEST\USERS01.DBF                                                   4 USERS                           15728640       1920 AVAILABLE            4 YES            3435972198    4194302          160  14680064        1792 ONLINE
D:\APP\CALVIN\ORADATA\TEST\UNDOTBS01.DBF                                                 3 UNDOTBS1                       104857600      12800 AVAILABLE            3 YES            3435972198    4194302          640 103809024       12672 ONLINE
D:\APP\CALVIN\ORADATA\TEST\SYSAUX01.DBF                                                  2 SYSAUX                         660602880      80640 AVAILABLE            2 YES            3435972198    4194302         1280 659554304       80512 ONLINE
D:\APP\CALVIN\ORADATA\TEST\SYSTEM01.DBF                                                  1 SYSTEM                         796917760      97280 AVAILABLE            1 YES            3435972198    4194302         1280 795869184       97152 SYSTEM
D:\APP\CALVIN\ORADATA\TEST\EXAMPLE01.DBF                                                 5 EXAMPLE                        104857600      12800 AVAILABLE            5 YES            3435972198    4194302           80 103809024       12672 ONLINE
D:\APP\CALVIN\ORADATA\TEST\TEST01.DBF                                                    6TEST01                         104857600      12800 AVAILABLE            6 NO                      0          0            0 103809024       12672 ONLINE
D:\APP\CALVIN\ORADATA\TEST\TEST02.DBF                                                     7TEST02                         104857600      12800AVAILABLE            7 NO                      0          0            0 103809024       12672 ONLINE
 
7 rowsselected
 
SQL> SELECT * FROM v$tablespace;
 
       TS# NAME                          INCLUDED_IN_DATABASE_BACKUP BIGFILE FLASHBACK_ON ENCRYPT_IN_BACKUP
---------- ------------------------------ ---------------------------------- ------------ -----------------
         0 SYSTEM                         YES                         NO      YES         
         1 SYSAUX                         YES                         NO      YES         
         2 UNDOTBS1                       YES                         NO      YES         
         4 USERS                          YES                         NO      YES         
         3 TEMP                           NO                          NO      YES         
         6 EXAMPLE                        YES                         NO      YES         
         7 TEST01                         YES                         NO      YES         
         8 TEST02                         YES                         NO      YES         
 
8 rowsselected
 
RMAN> run
2> {
3> sql 'altertablespace users offline immediate';
4> restore tablespaceusers;
5> recover tablespaceusers;
6> sql 'altertablespace users online';
7> }
 
sql 語句: alter tablespaceusers offline immediate
 
啓動 restore 於 07-5月 -13
使用通道 ORA_DISK_1
 
通道 ORA_DISK_1: 正在開始還原數據文件備份集
通道 ORA_DISK_1: 正在指定從備份集還原的數據文件
通道 ORA_DISK_1: 將數據文件 00004 還原到 D:\APP\CALVIN\ORADATA\TEST\USERS01.DBF
通道 ORA_DISK_1: 正在讀取備份片段D:\APP\CALVIN\FLASH_RECOVERY_AREA\TEST\BACKUPSET\2013_05_06\O1_MF_NNNDF_TAG20130506T174452_8RGYWNYX_.BKP
通道 ORA_DISK_1: 段句柄 = D:\APP\CALVIN\FLASH_RECOVERY_AREA\TEST\BACKUPSET\2013_05_06\O1_MF_NNNDF_TAG20130506T174452_8RGYWNYX_.BKP標記 = TAG20130506T174452
通道 ORA_DISK_1: 已還原備份片段 1
通道 ORA_DISK_1: 還原完成, 用時: 00:00:01
完成 restore 於 07-5月 -13
 
啓動 recover 於 07-5月 -13
使用通道 ORA_DISK_1
 
正在開始介質的恢復
介質恢復完成, 用時: 00:00:02
 
完成 recover 於 07-5月 -13
 
sql 語句: alter tablespaceusers online


 

恢復表空間前,必須將表空間離線;然後通過restore命令還原users表空間包含的所有數據文件,在發出recover命令,通過應用歸檔日誌文件,從而恢復表空間,回覆外幣後,將users表空間設置爲在線狀態;

 

如果數據庫爲關閉狀態,則現將數據庫啓動到mount狀態,然後將受損的表空間的所有數據文件離線後,將數據庫啓動到打開狀態,再執行上面這段程序即可;

 

2.        某個非系統數據文件損壞,而控制文件和聯機日誌文件沒有損壞;

如果某個非系統數據文件損壞,則我們進行數據文件級別的恢復操作,如果數據庫處於打開的狀態,則執行一下語句,這裏假設6號文件損壞;

 

在tablespace在線的情況下強行離線數據文件,是一種特殊情況,會導致再次在線數據文件是,需要通過歸檔日誌進行media recover;

 

 

SQL> select file_name ,file_id, tablespace_name from dba_data_files;
 
FILE_NAME                                                                           FILE_IDTABLESPACE_NAME
------------------------------------------------------------------------------------------ ------------------------------
D:\APP\CALVIN\ORADATA\TEST\USERS01.DBF                                                    4 USERS
D:\APP\CALVIN\ORADATA\TEST\UNDOTBS01.DBF                                                 3 UNDOTBS1
D:\APP\CALVIN\ORADATA\TEST\SYSAUX01.DBF                                                  2 SYSAUX
D:\APP\CALVIN\ORADATA\TEST\SYSTEM01.DBF                                                  1 SYSTEM
D:\APP\CALVIN\ORADATA\TEST\EXAMPLE01.DBF                                                 5 EXAMPLE
D:\APP\CALVIN\ORADATA\TEST\TEST01.DBF                                                    6 TEST01
D:\APP\CALVIN\ORADATA\TEST\TEST02.DBF                                                    7 TEST02
 
RMAN> run {
2> sql 'alter database datafile4 offline';
3> restore datafile 4;
4> recover datafile 4;
5> sql 'alter database datafile4 online';
6> }
 
sql 語句:alter database datafile 4 offline
 
啓動restore於07-5月-13
使用通道ORA_DISK_1
 
通道ORA_DISK_1:正在開始還原數據文件備份集
通道ORA_DISK_1:正在指定從備份集還原的數據文件
通道ORA_DISK_1:將數據文件00004還原到D:\APP\CALVIN\ORADATA\TEST\USERS01.DBF
通道ORA_DISK_1:正在讀取備份片段D:\APP\CALVIN\FLASH_RECOVERY_AREA\TEST\BACKUPSET\2013_05_06\O1_MF_NNNDF_TAG20130506T174452_8RGYWNYX_.BKP
通道ORA_DISK_1:段句柄=D:\APP\CALVIN\FLASH_RECOVERY_AREA\TEST\BACKUPSET\2013_05_06\O1_MF_NNNDF_TAG20130506T174452_8RGYWNYX_.BKP標記 =TAG20130506T174452
通道ORA_DISK_1:已還原備份片段1
通道ORA_DISK_1:還原完成,用時:00:00:01
完成restore於07-5月-13
 
啓動recover於07-5月-13
使用通道ORA_DISK_1
 
正在開始介質的恢復
介質恢復完成,用時:00:00:01
 
完成recover於07-5月-13
 
sql 語句:alter database datafile 4 online


 

 

如果在非系統數據文件損壞時,數據庫已經關閉,則先將數據庫啓動到mount,然後將受損的文件離線以後,將數據庫啓動到打開狀態,再執行以上這段程序即可;

 

3.        系統表空間的數據文件損壞,而控制文件和聯機日誌文件沒有損壞;

如果系統表空間損壞,則只能先將數據庫啓動到mount狀態,然後進行數據文件級別的恢復操作。

 

SQL> select file_name , file_id,tablespace_name from dba_data_files;
 
FILE_NAME                                                                          FILE_ID TABLESPACE_NAME
------------------------------------------------------------------------------------------ ------------------------------
D:\APP\CALVIN\ORADATA\TEST\USERS01.DBF                                                   4 USERS
D:\APP\CALVIN\ORADATA\TEST\UNDOTBS01.DBF                                                 3 UNDOTBS1
D:\APP\CALVIN\ORADATA\TEST\SYSAUX01.DBF                                                  2 SYSAUX
D:\APP\CALVIN\ORADATA\TEST\SYSTEM01.DBF                                                  1 SYSTEM
D:\APP\CALVIN\ORADATA\TEST\EXAMPLE01.DBF                                                  5 EXAMPLE
D:\APP\CALVIN\ORADATA\TEST\TEST01.DBF                                                    6 TEST01
D:\APP\CALVIN\ORADATA\TEST\TEST02.DBF                                                    7 TEST02
 
7 rows selected
 
 
Oracle Database 11g Enterprise Edition Release11.2.0.1.0 - 64bit Production
 
SQL> shutdown immediate;
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> startup mount;
ORACLE 例程已經啓動。
 
Total System Global Area 3407261696 bytes
Fixed Size                  2180504 bytes
Variable Size            1962936936 bytes
Database Buffers         1426063360 bytes
Redo Buffers               16080896 bytes
數據庫裝載完畢。
SQL>
 
RMAN> connect target /
 
已連接到目標數據庫:TEST (DBID=2109778957,未打開)
 
RMAN> run{
2> sql 'alter database datafile 1 offline';
3> restore datafile 1;
4> recover datafile 1;
5> sql 'alter database datafile 1 online';
6> }
 
使用目標數據庫控制文件替代恢復目錄
sql 語句:alter database datafile 1 offline
 
啓動restore於07-5月-13
分配的通道:ORA_DISK_1
通道ORA_DISK_1: SID=189設備類型=DISK
 
通道ORA_DISK_1:正在開始還原數據文件備份集
通道ORA_DISK_1:正在指定從備份集還原的數據文件
通道ORA_DISK_1:將數據文件00001還原到D:\APP\CALVIN\ORADATA\TEST\SYSTEM01.DBF
通道ORA_DISK_1:正在讀取備份片段D:\APP\CALVIN\FLASH_RECOVERY_AREA\TEST\BACKUPSET\2013_05_07\O1_MF_NNNDF_TAG20130507T185034_8RKQ3V5C_.BKP
通道ORA_DISK_1:段句柄= D:\APP\CALVIN\FLASH_RECOVERY_AREA\TEST\BACKUPSET\2013_05_07\O1_MF_NNNDF_TAG20130507T185034_8RKQ3V5C_.BKP標記 =TAG20130507T185034
通道ORA_DISK_1:已還原備份片段1
通道ORA_DISK_1:還原完成,用時:00:00:25
完成restore於07-5月-13
 
啓動recover於07-5月-13
使用通道ORA_DISK_1
 
正在開始介質的恢復
介質恢復完成,用時:00:00:00
 
完成 recover於 07-5月 -13
 
sql 語句: alter database datafile 1online
 
RMAN> sql 'alter database open';
 
sql 語句: alter database open
 
RMAN> sql 'select status from v$instance';
 
sql 語句: select status from v$instance
 
RMAN>
 
 
SQL> select status from v$instance;
 
STATUS
------------
OPEN

4.        如果所有的數據文件丟失,而控制文件和聯機日誌文件沒有損壞

這時,我們必須進行數據庫級別的恢復,將數據庫啓動到mount階段以後,執行以下命令:


SQL> host "del D:\app\calvin\oradata\test\*.dbf";
D:\app\calvin\oradata\test\EXAMPLE01.DBF
另一個程序正在使用此文件,進程無法訪問。
D:\app\calvin\oradata\test\SYSAUX01.DBF
另一個程序正在使用此文件,進程無法訪問。
D:\app\calvin\oradata\test\SYSTEM01.DBF
另一個程序正在使用此文件,進程無法訪問。
D:\app\calvin\oradata\test\TEMP01.DBF
另一個程序正在使用此文件,進程無法訪問。
D:\app\calvin\oradata\test\TEST01.DBF
另一個程序正在使用此文件,進程無法訪問。
D:\app\calvin\oradata\test\TEST02.DBF
另一個程序正在使用此文件,進程無法訪問。
D:\app\calvin\oradata\test\UNDOTBS01.DBF
另一個程序正在使用此文件,進程無法訪問。
D:\app\calvin\oradata\test\USERS01.DBF
另一個程序正在使用此文件,進程無法訪問。

數據文件正在使用,無法刪除,關閉Oracle數據庫在嘗試刪除;
SQL> shutdown immediate;
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> host "del D:\app\calvin\oradata\test\*.dbf";

SQL> startup ;
ORACLE 例程已經啓動。

Total System Global Area 3407261696 bytes
Fixed Size                  2180504 bytes
Variable Size            1962936936 bytes
Database Buffers         1426063360 bytes
Redo Buffers               16080896 bytes
數據庫裝載完畢。
ORA-01157: 無法標識/鎖定數據文件 1 - 請參閱 DBWR 跟蹤文件
ORA-01110: 數據文件 1: 'D:\APP\CALVIN\ORADATA\TEST\SYSTEM01.DBF'


SQL> shutdown abort;
ORACLE 例程已經關閉。
SQL> shutdown mount;
SP2-0717: 非法的 SHUTDOWN 選項
SQL> startup mount;
ORACLE 例程已經啓動。

Total System Global Area 3407261696 bytes
Fixed Size                  2180504 bytes
Variable Size            1962936936 bytes
Database Buffers         1426063360 bytes
Redo Buffers               16080896 bytes
數據庫裝載完畢。
SQL>

PS C:\Users\calvin> rman

恢復管理器: Release 11.2.0.1.0 - Production on 星期二 5月 7 19:04:45 2013

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

RMAN> connect target /

已連接到目標數據庫: TEST (DBID=2109778957, 未打開)

RMAN> run {
2> restore database;
3> recover database;
4> alter database open;
5> }

啓動 restore 於 07-5月 -13
使用目標數據庫控制文件替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=189 設備類型=DISK

通道 ORA_DISK_1: 正在開始還原數據文件備份集
通道 ORA_DISK_1: 正在指定從備份集還原的數據文件
通道 ORA_DISK_1: 將數據文件 00001 還原到 D:\APP\CALVIN\ORADATA\TEST\SYSTEM01.DBF
通道 ORA_DISK_1: 將數據文件 00002 還原到 D:\APP\CALVIN\ORADATA\TEST\SYSAUX01.DBF
通道 ORA_DISK_1: 將數據文件 00003 還原到 D:\APP\CALVIN\ORADATA\TEST\UNDOTBS01.DBF
通道 ORA_DISK_1: 將數據文件 00004 還原到 D:\APP\CALVIN\ORADATA\TEST\USERS01.DBF
通道 ORA_DISK_1: 將數據文件 00005 還原到 D:\APP\CALVIN\ORADATA\TEST\EXAMPLE01.DBF
通道 ORA_DISK_1: 將數據文件 00006 還原到 D:\APP\CALVIN\ORADATA\TEST\TEST01.DBF
通道 ORA_DISK_1: 將數據文件 00007 還原到 D:\APP\CALVIN\ORADATA\TEST\TEST02.DBF
通道 ORA_DISK_1: 正在讀取備份片段 D:\APP\CALVIN\FLASH_RECOVERY_AREA\TEST\BACKUPSET\2013_05_07\O1_MF_NNNDF_TAG20130507T185034_8RKQ3V5C_.BKP
通道 ORA_DISK_1: 段句柄 = D:\APP\CALVIN\FLASH_RECOVERY_AREA\TEST\BACKUPSET\2013_05_07\O1_MF_NNNDF_TAG20130507T185034_8RKQ3V5C_.BKP 標記 = TAG20130507T185034
通道 ORA_DISK_1: 已還原備份片段 1
通道 ORA_DISK_1: 還原完成, 用時: 00:00:46
完成 restore 於 07-5月 -13

啓動 recover 於 07-5月 -13
使用通道 ORA_DISK_1

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

完成 recover 於 07-5月 -13

數據庫已打開

RMAN>


SQL> select status from v$instance;

STATUS
------------
OPEN


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章