無新表空間資料檔案備份,歸檔都存在的還原與恢復

尛樣兒發表於2012-05-07
        這篇文章討論的是資料庫備份中沒有新建表空間對應資料檔案的備份,但建立表空間及其之後的歸檔Redo日誌都存在,新建表空間丟失之後的還原與恢復。這裡分RMAN和sqlplus工具,以及新舊控制檔案來討論這個問題。

1.建立資料庫備份。

C:\Users\LIUBINGLIN>rman target /

恢復管理器: Release 11.2.0.1.0 - Production on 星期日 5月 6 23:18:44 2012

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

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

RMAN> list backup of database;

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

備份集列表
===================


BS 關鍵字  型別 LV 大小       裝置型別 經過時間 完成時間
------- ---- -- ---------- ----------- ------------ ----------
6       Full    1.02G      DISK        00:00:53     05-5月 -12
        BP 關鍵字: 6   狀態: AVAILABLE  已壓縮: NO  標記: TAG20120505T155657
段名:D:\ORCL\BACKUPSET\2012_05_05\O1_MF_NNNDF_TAG20120505T155657_7T9QB9OR_.BKP
  備份集 6 中的資料檔案列表
  檔案 LV 型別 Ckp SCN    Ckp 時間   名稱
  ---- -- ---- ---------- ---------- ----
  1       Full 2924280    05-5月 -12 D:\APP\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
  2       Full 2924280    05-5月 -12 D:\APP\ORACLE\ORADATA\ORCL\SYSAUX01.DBF
  3       Full 2924280    05-5月 -12 D:\APP\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF

RMAN> delete noprompt backup of database;

分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=9 裝置型別=DISK

備份片段列表
BP 關鍵字  BS 關鍵字  Pc# Cp# 狀態      裝置型別段名稱
------- ------- --- --- ----------- ----------- ----------
6       6       1   1   AVAILABLE   DISK        D:\ORCL\BACKUPSET\2012_05_05\O1_MF_NNNDF_TAG20120505T155657_7T9QB9OR_.BKP
已刪除備份片段
備份片段控制程式碼=D:\ORCL\BACKUPSET\2012_05_05\O1_MF_NNNDF_TAG20120505T155657_7T9QB9OR_.BKP RECID=6 STAMP=782495817
1 物件已刪除


RMAN> backup database include current controlfile plus archivelog;


啟動 backup 於 06-5月 -12
當前日誌已存檔
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在啟動歸檔日誌備份集
通道 ORA_DISK_1: 正在指定備份集內的歸檔日誌
輸入歸檔日誌執行緒=1 序列=2 RECID=2 STAMP=781905401
輸入歸檔日誌執行緒=1 序列=3 RECID=3 STAMP=781905404
輸入歸檔日誌執行緒=1 序列=4 RECID=1 STAMP=781905401
通道 ORA_DISK_1: 正在啟動段 1 於 06-5月 -12
通道 ORA_DISK_1: 已完成段 1 於 06-5月 -12
段控制程式碼=D:\ORCL\BACKUPSET\2012_05_06\O1_MF_ANNNN_TAG20120506T232059_7TF5PWF3_.BKP 標記=TAG20120506T232059 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:04
通道 ORA_DISK_1: 正在啟動歸檔日誌備份集
通道 ORA_DISK_1: 正在指定備份集內的歸檔日誌
輸入歸檔日誌執行緒=1 序列=1 RECID=4 STAMP=781990766
通道 ORA_DISK_1: 正在啟動段 1 於 06-5月 -12
通道 ORA_DISK_1: 已完成段 1 於 06-5月 -12
段控制程式碼=D:\ORCL\BACKUPSET\2012_05_06\O1_MF_ANNNN_TAG20120506T232059_7TF5PZB1_.BKP 標記=TAG20120506T232059 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:01
通道 ORA_DISK_1: 正在啟動歸檔日誌備份集
通道 ORA_DISK_1: 正在指定備份集內的歸檔日誌
輸入歸檔日誌執行緒=1 序列=1 RECID=14 STAMP=782498923
通道 ORA_DISK_1: 正在啟動段 1 於 06-5月 -12
通道 ORA_DISK_1: 已完成段 1 於 06-5月 -12
段控制程式碼=D:\ORCL\BACKUPSET\2012_05_06\O1_MF_ANNNN_TAG20120506T232059_7TF5Q0L8_.BKP 標記=TAG20120506T232059 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:01
通道 ORA_DISK_1: 正在啟動歸檔日誌備份集
通道 ORA_DISK_1: 正在指定備份集內的歸檔日誌
輸入歸檔日誌執行緒=1 序列=1 RECID=15 STAMP=782608859
通道 ORA_DISK_1: 正在啟動段 1 於 06-5月 -12
通道 ORA_DISK_1: 已完成段 1 於 06-5月 -12
段控制程式碼=D:\ORCL\BACKUPSET\2012_05_06\O1_MF_ANNNN_TAG20120506T232059_7TF5Q1T0_.BKP 標記=TAG20120506T232059 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:01
完成 backup 於 06-5月 -12

啟動 backup 於 06-5月 -12
使用通道 ORA_DISK_1
全部資料庫備份將排除檔案 4
全部資料庫備份將排除檔案 6
通道 ORA_DISK_1: 正在啟動全部資料檔案備份集
通道 ORA_DISK_1: 正在指定備份集內的資料檔案
輸入資料檔案: 檔案號=00001 名稱=D:\APP\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
輸入資料檔案: 檔案號=00002 名稱=D:\APP\ORACLE\ORADATA\ORCL\SYSAUX01.DBF
輸入資料檔案: 檔案號=00003 名稱=D:\APP\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF
輸入資料檔案: 檔案號=00007 名稱=D:\APP\ORACLE\ORADATA\ORCL\DATA01.DBF
通道 ORA_DISK_1: 正在啟動段 1 於 06-5月 -12
通道 ORA_DISK_1: 已完成段 1 於 06-5月 -12
段控制程式碼=D:\ORCL\BACKUPSET\2012_05_06\O1_MF_NNNDF_TAG20120506T232107_7TF5Q4RW_.BKP 標記=TAG20120506T232107 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:01:05
通道 ORA_DISK_1: 正在啟動全部資料檔案備份集
通道 ORA_DISK_1: 正在指定備份集內的資料檔案
備份集內包括當前控制檔案
通道 ORA_DISK_1: 正在啟動段 1 於 06-5月 -12
通道 ORA_DISK_1: 已完成段 1 於 06-5月 -12
段控制程式碼=D:\ORCL\BACKUPSET\2012_05_06\O1_MF_NCNNF_TAG20120506T232107_7TF5S5XX_.BKP 標記=TAG20120506T232107 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:04
完成 backup 於 06-5月 -12

啟動 backup 於 06-5月 -12
當前日誌已存檔
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在啟動歸檔日誌備份集
通道 ORA_DISK_1: 正在指定備份集內的歸檔日誌
輸入歸檔日誌執行緒=1 序列=2 RECID=16 STAMP=782608937
通道 ORA_DISK_1: 正在啟動段 1 於 06-5月 -12
通道 ORA_DISK_1: 已完成段 1 於 06-5月 -12
段控制程式碼=D:\ORCL\BACKUPSET\2012_05_06\O1_MF_ANNNN_TAG20120506T232217_7TF5SBBB_.BKP 標記=TAG20120506T232217 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:01
完成 backup 於 06-5月 -12

啟動 Control File and SPFILE Autobackup 於 06-5月 -12
段 handle=D:\ORCL\AUTOBACKUP\2012_05_06\O1_MF_S_782608939_7TF5SFX1_.BKP comment=NONE
完成 Control File and SPFILE Autobackup 於 06-5月 -12

RMAN> show exclude;

db_unique_name 為 ORCL 的資料庫的 RMAN 配置引數為:
CONFIGURE EXCLUDE FOR TABLESPACE 'USERS';

RMAN> report schema;

db_unique_name 為 ORCL 的資料庫的資料庫方案報表

永久資料檔案列表
===========================
檔案大小 (MB) 表空間           回退段資料檔名稱
---- -------- -------------------- ------- ------------------------
1    700      SYSTEM               ***     D:\APP\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
2    560      SYSAUX               ***     D:\APP\ORACLE\ORADATA\ORCL\SYSAUX01.DBF
3    200      UNDOTBS1             ***     D:\APP\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF
4    173      USERS                ***     D:\APP\ORACLE\ORADATA\ORCL\USERS01.DBF
6    5        USERS                ***     D:\APP\ORACLE\USER01.DBF
7    5        DATA                 ***     D:\APP\ORACLE\ORADATA\ORCL\DATA01.DBF

RMAN> backup datafile 4,6;

啟動 backup 於 07-5月 -12
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在啟動全部資料檔案備份集
通道 ORA_DISK_1: 正在指定備份集內的資料檔案
輸入資料檔案: 檔案號=00004 名稱=D:\APP\ORACLE\ORADATA\ORCL\USERS01.DBF
輸入資料檔案: 檔案號=00006 名稱=D:\APP\ORACLE\USER01.DBF
通道 ORA_DISK_1: 正在啟動段 1 於 07-5月 -12
通道 ORA_DISK_1: 已完成段 1 於 07-5月 -12
段控制程式碼=D:\ORCL\BACKUPSET\2012_05_07\O1_MF_NNNDF_TAG20120507T000338_7TF86TMS_.BKP 標記=TAG20120507T000338 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:03
完成 backup 於 07-5月 -12

啟動 Control File and SPFILE Autobackup 於 07-5月 -12
段 handle=D:\ORCL\AUTOBACKUP\2012_05_07\O1_MF_S_782611421_7TF86Z7O_.BKP comment=NONE
完成 Control File and SPFILE Autobackup 於 07-5月 -12


2.建立新表空間。

C:\Users\LIUBINGLIN>sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on 星期一 5月 7 08:45:35 2012

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


連線到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options

SQL> create tablespace xiaoyang datafile 'D:\APP\ORACLE\ORADATA\ORCL\xiaoyang01.dbf' size 5m;

表空間已建立。

SQL> create table test.test123(id number) tablespace xiaoyang;

表已建立。

SQL> insert into test.test123 values(123);

已建立 1 行。

SQL> commit;

提交完成。


3.使用RMAN工具測試:舊控制檔案,無新表空間的備份,歸檔Redo日誌都存在的恢復。

C:\Users\LIUBINGLIN>sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on 星期一 5月 7 08:47:34 2012

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


連線到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options

SQL> shutdown abort
ORACLE 例程已經關閉。
SQL> startup nomount
ORACLE 例程已經啟動。

Total System Global Area  535662592 bytes
Fixed Size                  1375792 bytes
Variable Size             255853008 bytes
Database Buffers          272629760 bytes
Redo Buffers                5804032 bytes

C:\Users\LIUBINGLIN>rman target /

恢復管理器: Release 11.2.0.1.0 - Production on 星期一 5月 7 08:47:56 2012

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

連線到目標資料庫: ORCL (未裝載)

RMAN> restore controlfile from 'D:\ORCL\AUTOBACKUP\2012_05_07\O1_MF_S_782611421_7TF86Z7O_.BKP';

啟動 restore 於 07-5月 -12
使用目標資料庫控制檔案替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=134 裝置型別=DISK

通道 ORA_DISK_1: 正在還原控制檔案
通道 ORA_DISK_1: 還原完成, 用時: 00:00:01
輸出檔名=D:\APP\ORACLE\CONTROL01.CTL
完成 restore 於 07-5月 -12

RMAN> alter database mount;

資料庫已裝載
釋放的通道: ORA_DISK_1

C:\Users\LIUBINGLIN>sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on 星期一 5月 7 08:48:49 2012

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


連線到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
D:\APP\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
D:\APP\ORACLE\ORADATA\ORCL\SYSAUX01.DBF
D:\APP\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF
D:\APP\ORACLE\ORADATA\ORCL\USERS01.DBF
D:\APP\ORACLE\USER01.DBF
D:\APP\ORACLE\ORADATA\ORCL\DATA01.DBF

已選擇6行。


C:\Users\LIUBINGLIN>rman target /

恢復管理器: Release 11.2.0.1.0 - Production on 星期一 5月 7 08:49:29 2012

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

已連線到目標資料庫: ORCL (DBID=1290386656, 未開啟)

RMAN> list backup of database;

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

備份集列表
===================


BS 關鍵字  型別 LV 大小       裝置型別 經過時間 完成時間
------- ---- -- ---------- ----------- ------------ ----------
16      Full    1.01G      DISK        00:00:57     06-5月 -12
        BP 關鍵字: 16   狀態: AVAILABLE  已壓縮: NO  標記: TAG20120506T232107
段名:D:\ORCL\BACKUPSET\2012_05_06\O1_MF_NNNDF_TAG20120506T232107_7TF5Q4RW_.BKP
  備份集 16 中的資料檔案列表
  檔案 LV 型別 Ckp SCN    Ckp 時間   名稱
  ---- -- ---- ---------- ---------- ----
  1       Full 2941118    06-5月 -12 D:\APP\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
  2       Full 2941118    06-5月 -12 D:\APP\ORACLE\ORADATA\ORCL\SYSAUX01.DBF
  3       Full 2941118    06-5月 -12 D:\APP\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF
  7       Full 2941118    06-5月 -12 D:\APP\ORACLE\ORADATA\ORCL\DATA01.DBF

BS 關鍵字  型別 LV 大小       裝置型別 經過時間 完成時間
------- ---- -- ---------- ----------- ------------ ----------
20      Full    48.29M     DISK        00:00:03     07-5月 -12
        BP 關鍵字: 20   狀態: AVAILABLE  已壓縮: NO  標記: TAG20120507T000338
段名:D:\ORCL\BACKUPSET\2012_05_07\O1_MF_NNNDF_TAG20120507T000338_7TF86TMS_.BKP
  備份集 20 中的資料檔案列表
  檔案 LV 型別 Ckp SCN    Ckp 時間   名稱
  ---- -- ---- ---------- ---------- ----
  4       Full 2943251    07-5月 -12 D:\APP\ORACLE\ORADATA\ORCL\USERS01.DBF
  6       Full 2943251    07-5月 -12 D:\APP\ORACLE\USER01.DBF

RMAN> restore database;

啟動 restore 於 07-5月 -12
啟動 implicit crosscheck backup 於 07-5月 -12
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=134 裝置型別=DISK
已交叉檢驗的 16 物件
完成 implicit crosscheck backup 於 07-5月 -12

啟動 implicit crosscheck copy 於 07-5月 -12
使用通道 ORA_DISK_1
已交叉檢驗的 4 物件
完成 implicit crosscheck copy 於 07-5月 -12

搜尋恢復區中的所有檔案
正在編制檔案目錄...
目錄編制完畢

已列入目錄的檔案的列表
=======================
檔名: D:\ORCL\AUTOBACKUP\2012_05_07\O1_MF_S_782611421_7TF86Z7O_.BKP

使用通道 ORA_DISK_1

全部資料庫備份將排除檔案 4
全部資料庫備份將排除檔案 6
通道 ORA_DISK_1: 正在開始還原資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集還原的資料檔案
通道 ORA_DISK_1: 將資料檔案 00001 還原到 D:\APP\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
通道 ORA_DISK_1: 將資料檔案 00002 還原到 D:\APP\ORACLE\ORADATA\ORCL\SYSAUX01.DBF
通道 ORA_DISK_1: 將資料檔案 00003 還原到 D:\APP\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF
通道 ORA_DISK_1: 將資料檔案 00007 還原到 D:\APP\ORACLE\ORADATA\ORCL\DATA01.DBF
通道 ORA_DISK_1: 正在讀取備份片段 D:\ORCL\BACKUPSET\2012_05_06\O1_MF_NNNDF_TAG20120506T232107_7TF5Q4RW_.BKP
通道 ORA_DISK_1: 段控制程式碼 = D:\ORCL\BACKUPSET\2012_05_06\O1_MF_NNNDF_TAG20120506T232107_7TF5Q4RW_.BKP 標記 = TAG20120506T232107
通道 ORA_DISK_1: 已還原備份片段 1
通道 ORA_DISK_1: 還原完成, 用時: 00:00:45
故障轉移到上一個備份

完成 restore 於 07-5月 -12

RMAN> restore datafile 4,6;

啟動 restore 於 07-5月 -12
使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在開始還原資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集還原的資料檔案
通道 ORA_DISK_1: 將資料檔案 00004 還原到 D:\APP\ORACLE\ORADATA\ORCL\USERS01.DBF
通道 ORA_DISK_1: 將資料檔案 00006 還原到 D:\APP\ORACLE\USER01.DBF
通道 ORA_DISK_1: 正在讀取備份片段 D:\ORCL\BACKUPSET\2012_05_07\O1_MF_NNNDF_TAG20120507T000338_7TF86TMS_.BKP
通道 ORA_DISK_1: 段控制程式碼 = D:\ORCL\BACKUPSET\2012_05_07\O1_MF_NNNDF_TAG20120507T000338_7TF86TMS_.BKP 標記 = TAG20120507T000338
通道 ORA_DISK_1: 已還原備份片段 1
通道 ORA_DISK_1: 還原完成, 用時: 00:00:03
完成 restore 於 07-5月 -12

RMAN> recover database;

啟動 recover 於 07-5月 -12
使用通道 ORA_DISK_1

正在開始介質的恢復

執行緒 1 序列 2 的歸檔日誌已作為檔案 D:\APP\ORACLE\ORADATA\ORCL\REDO02.LOG 存在於磁碟上
執行緒 1 序列 3 的歸檔日誌已作為檔案 D:\APP\ORACLE\ORADATA\ORCL\REDO03.LOG 存在於磁碟上
歸檔日誌檔名=D:\APP\ORACLE\ORADATA\ORCL\REDO02.LOG 執行緒=1 序列=2
歸檔日誌檔名=D:\APP\ORACLE\ORADATA\ORCL\REDO03.LOG 執行緒=1 序列=3
建立資料檔案, 檔案號 = 5 名稱 = D:\APP\ORACLE\ORADATA\ORCL\XIAOYANG01.DBF
歸檔日誌檔名=D:\APP\ORACLE\ORADATA\ORCL\REDO03.LOG 執行緒=1 序列=3
介質恢復完成, 用時: 00:00:02
完成 recover 於 07-5月 -12

       從上面的資訊可以看出,使用RMAN來恢復控制檔案中不存在的資料檔案,RMAN會根據歸檔中的記錄自動建立資料檔案。


C:\Users\LIUBINGLIN>sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on 星期一 5月 7 09:25:21 2012

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


連線到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options

SQL> alter database open resetlogs;

資料庫已更改。


4.使用sqlplus工具測試:舊控制檔案,無新表空間的備份,歸檔Redo日誌都存在的恢復。

C:\Users\LIUBINGLIN>sqlplus/ as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on 星期一 5月 7 09:53:35 2012

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


連線到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options

SQL> shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。

C:\Users\LIUBINGLIN>sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on 星期一 5月 7 09:54:37 2012

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

已連線到空閒例程。

SQL> startup nomount
ORACLE 例程已經啟動。

Total System Global Area  535662592 bytes
Fixed Size                  1375792 bytes
Variable Size             255853008 bytes
Database Buffers          272629760 bytes
Redo Buffers                5804032 bytes

C:\Users\LIUBINGLIN>rman target /

恢復管理器: Release 11.2.0.1.0 - Production on 星期一 5月 7 09:54:49 2012

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

連線到目標資料庫: ORCL (未裝載)

RMAN> restore controlfile from 'D:\ORCL\AUTOBACKUP\2012_05_07\O1_MF_S_782611421_7TF86Z7O_.BKP';

啟動 restore 於 07-5月 -12
使用目標資料庫控制檔案替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=134 裝置型別=DISK

通道 ORA_DISK_1: 正在還原控制檔案
通道 ORA_DISK_1: 還原完成, 用時: 00:00:01
輸出檔名=D:\APP\ORACLE\CONTROL01.CTL
完成 restore 於 07-5月 -12

RMAN> restore database;

啟動 restore 於 07-5月 -12
啟動 implicit crosscheck backup 於 07-5月 -12
使用目標資料庫控制檔案替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=135 裝置型別=DISK
已交叉檢驗的 16 物件
完成 implicit crosscheck backup 於 07-5月 -12

啟動 implicit crosscheck copy 於 07-5月 -12
使用通道 ORA_DISK_1
已交叉檢驗的 4 物件
完成 implicit crosscheck copy 於 07-5月 -12

搜尋恢復區中的所有檔案
正在編制檔案目錄...
目錄編制完畢

已列入目錄的檔案的列表
=======================
檔名: D:\ORCL\AUTOBACKUP\2012_05_07\O1_MF_S_782611421_7TF86Z7O_.BKP
檔名: D:\ORCL\AUTOBACKUP\2012_05_07\O1_MF_S_782645167_7TG95LYS_.BKP

使用通道 ORA_DISK_1

全部資料庫備份將排除檔案 4
全部資料庫備份將排除檔案 6
通道 ORA_DISK_1: 正在開始還原資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集還原的資料檔案
通道 ORA_DISK_1: 將資料檔案 00001 還原到 D:\APP\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
通道 ORA_DISK_1: 將資料檔案 00002 還原到 D:\APP\ORACLE\ORADATA\ORCL\SYSAUX01.DBF
通道 ORA_DISK_1: 將資料檔案 00003 還原到 D:\APP\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF
通道 ORA_DISK_1: 將資料檔案 00007 還原到 D:\APP\ORACLE\ORADATA\ORCL\DATA01.DBF
通道 ORA_DISK_1: 正在讀取備份片段 D:\ORCL\BACKUPSET\2012_05_06\O1_MF_NNNDF_TAG20120506T232107_7TF5Q4RW_.BKP
通道 ORA_DISK_1: 段控制程式碼 = D:\ORCL\BACKUPSET\2012_05_06\O1_MF_NNNDF_TAG20120506T232107_7TF5Q4RW_.BKP 標記 = TAG20120506T232107
通道 ORA_DISK_1: 已還原備份片段 1
通道 ORA_DISK_1: 還原完成, 用時: 00:00:45
故障轉移到上一個備份

完成 restore 於 07-5月 -12

RMAN> restore datafile 4,6;

啟動 restore 於 07-5月 -12
使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在開始還原資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集還原的資料檔案
通道 ORA_DISK_1: 將資料檔案 00004 還原到 D:\APP\ORACLE\ORADATA\ORCL\USERS01.DBF
通道 ORA_DISK_1: 將資料檔案 00006 還原到 D:\APP\ORACLE\USER01.DBF
通道 ORA_DISK_1: 正在讀取備份片段 D:\ORCL\BACKUPSET\2012_05_07\O1_MF_NNNDF_TAG20120507T000338_7TF86TMS_.BKP
通道 ORA_DISK_1: 段控制程式碼 = D:\ORCL\BACKUPSET\2012_05_07\O1_MF_NNNDF_TAG20120507T000338_7TF86TMS_.BKP 標記 = TAG20120507T000338
通道 ORA_DISK_1: 已還原備份片段 1
通道 ORA_DISK_1: 還原完成, 用時: 00:00:07
完成 restore 於 07-5月 -12


C:\Users\LIUBINGLIN>sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on 星期一 5月 7 09:59:16 2012

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


連線到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options

SQL> recover database using backup controlfile;
ORA-00279: 更改 2941118 (在 05/06/2012 23:21:07 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: D:\ARC0000000002_0782498923.0001
ORA-00280: 更改 2941118 (用於執行緒 1) 在序列 #2 中


指定日誌: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: 更改 2941149 (在 05/06/2012 23:22:17 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: D:\ARC0000000003_0782498923.0001
ORA-00280: 更改 2941149 (用於執行緒 1) 在序列 #3 中
ORA-00278: 此恢復不再需要日誌檔案 'D:\ARC0000000002_0782498923.0001'


ORA-00283: 恢復會話因錯誤而取消
ORA-01244: 未命名的資料檔案由介質恢復新增至控制檔案
ORA-01110: 資料檔案 5: 'D:\APP\ORACLE\ORADATA\ORCL\XIAOYANG01.DBF'


ORA-01112: 未啟動介質恢復

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
D:\APP\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
D:\APP\ORACLE\ORADATA\ORCL\SYSAUX01.DBF
D:\APP\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF
D:\APP\ORACLE\ORADATA\ORCL\USERS01.DBF
D:\APP\ORACLE\DB_1\DATABASE\UNNAMED00005
D:\APP\ORACLE\USER01.DBF
D:\APP\ORACLE\ORADATA\ORCL\DATA01.DBF

已選擇7行。

        從上面的輸出可以看出,由於控制檔案過舊,在控制檔案中沒有XIAOYANG01.DBF資料檔案的記錄,在恢復過程中,Oracle新建立了一個UNNAMED00005的檔案。

SQL> alter database create datafile 'D:\APP\ORACLE\DB_1\DATABASE\UNNAMED00005' as 'D:\APP\ORACLE\ORADATA\ORCL\XIAOYANG01.DBF';

資料庫已更改。

        將UNNAMED00005重定義成XIAOYANG01.DBF,如果使用RMAN,這個過程是由RMAN自動完成的,再次印證RMAN是個智慧的工具。

SQL> recover database using backup controlfile;
ORA-00279: 更改 2956363 (在 05/07/2012 08:46:16 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: D:\ARC0000000003_0782498923.0001
ORA-00280: 更改 2956363 (用於執行緒 1) 在序列 #3 中


指定日誌: {=suggested | filename | AUTO | CANCEL}
auto
已應用的日誌。
完成介質恢復。
SQL> alter database open resetlogs;

資料庫已更改。

SQL> select file_name from dba_data_files;

FILE_NAME
--------------------------------------------------------------------------------
D:\APP\ORACLE\USER01.DBF
D:\APP\ORACLE\ORADATA\ORCL\USERS01.DBF
D:\APP\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF
D:\APP\ORACLE\ORADATA\ORCL\SYSAUX01.DBF
D:\APP\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
D:\APP\ORACLE\ORADATA\ORCL\XIAOYANG01.DBF
D:\APP\ORACLE\ORADATA\ORCL\DATA01.DBF

已選擇7行。

5.使用RMAN工具測試:最新控制檔案,丟失新表空間資料檔案,無新表空間備份,歸檔Redo日誌都存在的恢復。

C:\Users\LIUBINGLIN>sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on 星期一 5月 7 11:07:36 2012

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


連線到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options

SQL> select status from v$instance;

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

SQL> shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。

//手動將XIAOYANG01.DBF重新命名為XIAOYANG01_.DBF。

SQL> startup
ORACLE 例程已經啟動。

Total System Global Area  535662592 bytes
Fixed Size                  1375792 bytes
Variable Size             255853008 bytes
Database Buffers          272629760 bytes
Redo Buffers                5804032 bytes
資料庫裝載完畢。
ORA-01157: 無法標識/鎖定資料檔案 5 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 5: 'D:\APP\ORACLE\ORADATA\ORCL\XIAOYANG01.DBF'

C:\Users\LIUBINGLIN>rman target /

恢復管理器: Release 11.2.0.1.0 - Production on 星期一 5月 7 11:12:46 2012

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

已連線到目標資料庫: ORCL (DBID=1290386656, 未開啟)

RMAN> recover datafile 5;

啟動 recover 於 07-5月 -12
使用目標資料庫控制檔案替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=133 裝置型別=DISK
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover 命令 (在 05/07/2012 11:12:59 上) 失敗
RMAN-06094: 資料檔案5必須重新儲存

RMAN> recover database;

啟動 recover 於 07-5月 -12
使用通道 ORA_DISK_1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover 命令 (在 05/07/2012 11:13:14 上) 失敗
RMAN-06094: 資料檔案5必須重新儲存

RMAN> restore datafile 5;

啟動 restore 於 07-5月 -12
使用通道 ORA_DISK_1

建立資料檔案, 檔案號 = 5 名稱 = D:\APP\ORACLE\ORADATA\ORCL\XIAOYANG01.DBF
沒有完成還原; 所有檔案均為只讀或離線檔案或者已經還原
完成 restore 於 07-5月 -12

RMAN> recover datafile 5;

啟動 recover 於 07-5月 -12
使用通道 ORA_DISK_1

正在開始介質的恢復

歸檔日誌檔名=D:\ARC0000000003_0782498923.0001 執行緒=1 序列=3
介質恢復完成, 用時: 00:00:00
完成 recover 於 07-5月 -12

RMAN> alter database open;

資料庫已開啟

        由此看出,雖然沒有xiaoyang表空間的備份,但使用RMAN的restore命令,依然可根據控制檔案中的資訊記錄自動建立資料檔案,之後執行recover命令即可。

6.使用SQLPLUS工具測試:最新控制檔案,丟失新表空間資料檔案,無新表空間備份,歸檔Redo日誌都存在的恢復。

SQL> shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。

//手動將XIAOYANG01.DBF重新命名為XIAOYANG01_.DBF。

SQL> startup
ORACLE 例程已經啟動。

Total System Global Area  535662592 bytes
Fixed Size                  1375792 bytes
Variable Size             255853008 bytes
Database Buffers          272629760 bytes
Redo Buffers                5804032 bytes
資料庫裝載完畢。
ORA-01157: 無法標識/鎖定資料檔案 5 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 5: 'D:\APP\ORACLE\ORADATA\ORCL\XIAOYANG01.DBF'


SQL> recover datafile 5;
ORA-00283: 恢復會話因錯誤而取消
ORA-01110: 資料檔案 5: 'D:\APP\ORACLE\ORADATA\ORCL\XIAOYANG01.DBF'
ORA-01157: 無法標識/鎖定資料檔案 5 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 5: 'D:\APP\ORACLE\ORADATA\ORCL\XIAOYANG01.DBF'


SQL> alter database create datafile 'D:\APP\ORACLE\ORADATA\ORCL\XIAOYANG01.DBF';

資料庫已更改。

SQL> recover datafile 5;
ORA-00279: 更改 2956363 (在 05/07/2012 08:46:16 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: D:\ARC0000000003_0782498923.0001
ORA-00280: 更改 2956363 (用於執行緒 1) 在序列 #3 中


指定日誌: {=suggested | filename | AUTO | CANCEL}
auto
已應用的日誌。
完成介質恢復。

SQL> alter database open;

資料庫已更改。


參考文章:

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

相關文章