oracle 11g 从rman全备中恢复控制文件,拥有RMAN全备(缺少后增文件),丢失全部数据文件,控制文件的恢复...
1.做一個RMAN的全備
E:\oracle\rman_scripts>rman catalog target
恢復管理器: Release 10.2.0.1.0 - Production on 星期二 3月 10 14:52:50 2009
Copyright (c) 1982, 2005, Oracle.? All rights reserved.
連接到目標數據庫: ORASJH (DBID=2615173674)
連接到恢復目錄數據庫
RMAN> @full_back_db.sql
RMAN> # start backup database
2>
3> run {
4> allocate channel c1 type disk;
5> backup format 'E:\oracle\rman_backup\full%u_%s_%p' database
6> plus archivelog format 'E:\oracle\rman_backup\archive_%d_%T_%s' delete all in
put;
7> release channel c1;
8> }
分配的通道: c1
通道 c1: sid=143 devtype=DISK
啟動 backup 于 10-3月 -09
當前日志已存檔
通道 c1: 正在啟動存檔日志備份集
通道 c1: 正在指定備份集中的存檔日志
輸入存檔日志線程 =1 序列 =235 記錄 ID=13 時間戳=681062941
輸入存檔日志線程 =1 序列 =236 記錄 ID=11 時間戳=681058773
輸入存檔日志線程 =1 序列 =237 記錄 ID=12 時間戳=681062675
輸入存檔日志線程 =1 序列 =238 記錄 ID=14 時間戳=681142722
輸入存檔日志線程 =1 序列 =239 記錄 ID=15 時間戳=681144798
通道 c1: 正在啟動段 1 于 10-3月 -09
通道 c1: 已完成段 1 于 10-3月 -09
段句柄=E:\ORACLE\RMAN_BACKUP\ARCHIVE_ORASJH_20090310_12 標記=TAG20090310T145320
注釋=NONE
通道 c1: 備份集已完成, 經過時間:00:00:02
通道 c1: 正在刪除存檔日志
存檔日志文件名 =E:\ORACLE\ORASJH\ARCHIVE\ARC00235_0679223338.001 記錄 ID=13 時間
戳 =681062941
存檔日志文件名 =E:\ORACLE\ORASJH\ARCHIVE\ARC00236_0679223338.001 記錄 ID=11 時間
戳 =681058773
存檔日志文件名 =E:\ORACLE\ORASJH\ARCHIVE\ARC00237_0679223338.001 記錄 ID=12 時間
戳 =681062675
存檔日志文件名 =E:\ORACLE\ORASJH\ARCHIVE\ARC00238_0679223338.001 記錄 ID=14 時間
戳 =681142722
存檔日志文件名 =E:\ORACLE\ORASJH\ARCHIVE\ARC00239_0679223338.001 記錄 ID=15 時間
戳 =681144798
完成 backup 于 10-3月 -09
啟動 backup 于 10-3月 -09
通道 c1: 啟動全部數據文件備份集
通道 c1: 正在指定備份集中的數據文件
輸入數據文件 fno=00001 name=E:\ORACLE\ORASJH\SYSTEM01.DBF
輸入數據文件 fno=00002 name=E:\ORACLE\ORASJH\UNDOTBS01.DBF
輸入數據文件 fno=00003 name=E:\ORACLE\ORASJH\SYSAUX01.DBF
輸入數據文件 fno=00004 name=E:\ORACLE\ORASJH\USERS01.DBF
通道 c1: 正在啟動段 1 于 10-3月 -09
通道 c1: 已完成段 1 于 10-3月 -09
段句柄=E:\ORACLE\RMAN_BACKUP\FULL0DK9ISF4_13_1 標記=TAG20090310T145324 注釋=NONE
通道 c1: 備份集已完成, 經過時間:00:00:45
完成 backup 于 10-3月 -09
啟動 backup 于 10-3月 -09
當前日志已存檔
通道 c1: 正在啟動存檔日志備份集
通道 c1: 正在指定備份集中的存檔日志
輸入存檔日志線程 =1 序列 =240 記錄 ID=16 時間戳=681144850
通道 c1: 正在啟動段 1 于 10-3月 -09
通道 c1: 已完成段 1 于 10-3月 -09
段句柄=E:\ORACLE\RMAN_BACKUP\ARCHIVE_ORASJH_20090310_14 標記=TAG20090310T145412
注釋=NONE
通道 c1: 備份集已完成, 經過時間:00:00:02
通道 c1: 正在刪除存檔日志
存檔日志文件名 =E:\ORACLE\ORASJH\ARCHIVE\ARC00240_0679223338.001 記錄 ID=16 時間
戳 =681144850
完成 backup 于 10-3月 -09
啟動 Control File and SPFILE Autobackup 于 10-3月 -09
段 handle=C:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\C-2615173674-20090310-00 commen
t=NONE
完成 Control File and SPFILE Autobackup 于 10-3月 -09
釋放的通道: c1
RMAN>
RMAN> # end
2> **文件結尾**
RMAN>
2.創建一個新的數據文件。
SQL> select name from v$datafile;
NAME
-----------------------------------------
E:\ORACLE\ORASJH\SYSTEM01.DBF
E:\ORACLE\ORASJH\UNDOTBS01.DBF
E:\ORACLE\ORASJH\SYSAUX01.DBF
E:\ORACLE\ORASJH\USERS01.DBF
SQL> create tablespace sjh datafile 'E:\ORACLE\ORASJH\sjh.dbf' size 2m;
表空間已創建。
SQL> create table test tablespace sjh as select * from dba_users;
表已創建。
SQL> select count(*) from dba_users;
COUNT(*)
----------
11
SQL> commit;
提交完成。
SQL> alter system switch logfile;
系統已更改。
3.模擬所有控制文件,數據文件的丟失。
SQL> shutdown immediate;
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
手工刪除所有的控制文件,數據文件。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area? 167772160 bytes
Fixed Size????????????????? 1247876 bytes
Variable Size????????????? 71304572 bytes
Database Buffers?????????? 88080384 bytes
Redo Buffers??????????????? 7139328 bytes
ORA-00205: ?????????, ??????, ???????? --刪除了控制文件,數據庫無法mount。
4.恢復
4.1恢復控制文件
E:\oracle\rman_scripts>rman catalog target
恢復管理器: Release 10.2.0.1.0 - Production on 星期二 3月 10 15:32:46 2009
Copyright (c) 1982, 2005, Oracle.? All rights reserved.
連接到目標數據庫: orasjh (未裝載)
連接到恢復目錄數據庫
RMAN> restore controlfile to 'e:\contrl.bak' from autobackup;
啟動 restore 于 10-3月 -09
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK
通道 ORA_DISK_1: 尋找以下日期的自動備份: 20090310
通道 ORA_DISK_1: 已找到的自動備份: c-2615173674-20090310-01通道 ORA_DISK_1: 從自動備份復原控制文件已完成
完成 restore 于 10-3月 -09
--因為RMAN的自動備份控制文件的選項已經打開,所以在創建數據文件的時候,控制文件自動備份了,這個備份不是全備時候的控制文件備份。為了模擬特定控制文件(沒記錄數據文件的創建),我們指定從全備中的備份集中恢復控制文件。
RMAN>? restore controlfile to 'e:\contrl.bak' from 'C:\ORACLE\PRODUCT\10.2.0\DB_
1\DATABASE\C-2615173674-20090310-00';
啟動 restore 于 10-3月 -09
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK
通道 ORA_DISK_1: 正在復原控制文件
通道 ORA_DISK_1: 恢復完成, 用時: 00:00:02
完成 restore 于 10-3月 -09
--將e:\contrl.bak copy到控制文件的所在目錄并改名成:control1.ctl,control2.ctl,control3.ctl。
4.2恢復備份期間的歸檔日志
RMAN> restore archivelog sequence 240
2> ;
啟動 restore 于 10-3月 -09
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在啟動到默認目標的存檔日志恢復
通道 ORA_DISK_1: 正在恢復存檔日志
存檔日志線程 =1 序列=240
通道 ORA_DISK_1: 正在讀取備份段 E:\ORACLE\RMAN_BACKUP\ARCHIVE_ORASJH_20090310_14
通道 ORA_DISK_1: 已恢復備份段 1
段句柄 = E:\ORACLE\RMAN_BACKUP\ARCHIVE_ORASJH_20090310_14 標記 = TAG20090310T145
412
通道 ORA_DISK_1: 恢復完成, 用時: 00:00:01
完成 restore 于 10-3月 -09
SQL> alter database mount;??? --因為恢復了控制文件,所以數據庫能mount。
數據庫已更改。
4.3還原數據文件
RMAN> restore database;
啟動 restore 于 10-3月 -09
釋放的通道: ORA_DISK_1
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK
通道 ORA_DISK_1: 正在開始恢復數據文件備份集
通道 ORA_DISK_1: 正在指定從備份集恢復的數據文件
正將數據文件00001恢復到E:\ORACLE\ORASJH\SYSTEM01.DBF
正將數據文件00002恢復到E:\ORACLE\ORASJH\UNDOTBS01.DBF
正將數據文件00003恢復到E:\ORACLE\ORASJH\SYSAUX01.DBF
正將數據文件00004恢復到E:\ORACLE\ORASJH\USERS01.DBF
通道 ORA_DISK_1: 正在讀取備份段 E:\ORACLE\RMAN_BACKUP\FULL0DK9ISF4_13_1
通道 ORA_DISK_1: 已恢復備份段 1
段句柄 = E:\ORACLE\RMAN_BACKUP\FULL0DK9ISF4_13_1 標記 = TAG20090310T145324
通道 ORA_DISK_1: 恢復完成, 用時: 00:00:45
完成 restore 于 10-3月 -09
4.4用備份控制文件恢復數據庫
SQL> recover database using backup controlfile until cancel;
ORA-00279: 更改 403337 (在 03/10/2009 14:53:24 生成) 對于線程 1 是必需的
ORA-00289: 建議: E:\ORACLE\ORASJH\ARCHIVE\ARC00240_0679223338.001
ORA-00280: 更改 403337 (用于線程 1) 在序列 #240 中
指定日志: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: 更改 403361 (在 03/10/2009 14:54:10 生成) 對于線程 1 是必需的
ORA-00289: 建議: E:\ORACLE\ORASJH\ARCHIVE\ARC00241_0679223338.001
ORA-00280: 更改 403361 (用于線程 1) 在序列 #241 中
ORA-00278: 此恢復不再需要日志文件
'E:\ORACLE\ORASJH\ARCHIVE\ARC00240_0679223338.001'
ORA-00283: 恢復會話因錯誤而取消
ORA-01244: 未命名的數據文件由介質恢復添加至控制文件
ORA-01110: 數據文件 5: 'E:\ORACLE\ORASJH\SJH.DBF'
ORA-01112: 未啟動介質恢復
SQL> select name from v$datafile;
NAME
-----------------------------------------------------------
E:\ORACLE\ORASJH\SYSTEM01.DBF
E:\ORACLE\ORASJH\UNDOTBS01.DBF
E:\ORACLE\ORASJH\SYSAUX01.DBF
E:\ORACLE\ORASJH\USERS01.DBF
C:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNAMED00005
--原來的控制文件中沒有新加數據文件的記錄,oracle自動生成一個缺省的文件名:UNNAMED00005
SQL> alter database create datafile 'C:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNA
MED00005' as 'E:\ORACLE\ORASJH\SJH.DBF';
數據庫已更改。
--可以通過CREATE AS方式修改控制文件中記錄。繼續應用所有歸檔和日志文件可以完成恢復。
SQL> recover database using backup controlfile until cancel;
ORA-00279: 更改 403554 (在 03/10/2009 14:59:44 生成) 對于線程 1 是必需的
ORA-00289: 建議: E:\ORACLE\ORASJH\ARCHIVE\ARC00241_0679223338.001
ORA-00280: 更改 403554 (用于線程 1) 在序列 #241 中
指定日志: {=suggested | filename | AUTO | CANCEL}
ORA-00279: 更改 403840 (在 03/10/2009 15:01:54 生成) 對于線程 1 是必需的
ORA-00289: 建議: E:\ORACLE\ORASJH\ARCHIVE\ARC00242_0679223338.001
ORA-00280: 更改 403840 (用于線程 1) 在序列 #242 中
ORA-00278: 此恢復不再需要日志文件
'E:\ORACLE\ORASJH\ARCHIVE\ARC00241_0679223338.001'
指定日志: {=suggested | filename | AUTO | CANCEL}
ORA-00279: 更改 423851 (在 03/10/2009 15:18:57 生成) 對于線程 1 是必需的
ORA-00289: 建議: E:\ORACLE\ORASJH\ARCHIVE\ARC00243_0679223338.001
ORA-00280: 更改 423851 (用于線程 1) 在序列 #243 中
ORA-00278: 此恢復不再需要日志文件
'E:\ORACLE\ORASJH\ARCHIVE\ARC00242_0679223338.001'
指定日志: {=suggested | filename | AUTO | CANCEL}
E:\oracle\orasjh\REDO01.LOG
ORA-00310: 歸檔日志包含序列 241; 要求序列 243
ORA-00334: 歸檔日志: 'E:\ORACLE\ORASJH\REDO01.LOG'
SQL> recover database using backup controlfile until cancel;
ORA-00279: 更改 423851 (在 03/10/2009 15:18:57 生成) 對于線程 1 是必需的
ORA-00289: 建議: E:\ORACLE\ORASJH\ARCHIVE\ARC00243_0679223338.001
ORA-00280: 更改 423851 (用于線程 1) 在序列 #243 中
指定日志: {=suggested | filename | AUTO | CANCEL}
E:\ORACLE\ORASJH\REDO02.LOG
ORA-00310: 歸檔日志包含序列 242; 要求序列 243
ORA-00334: 歸檔日志: 'E:\ORACLE\ORASJH\REDO02.LOG'
SQL> recover database using backup controlfile until cancel;
ORA-00279: 更改 423851 (在 03/10/2009 15:18:57 生成) 對于線程 1 是必需的
ORA-00289: 建議: E:\ORACLE\ORASJH\ARCHIVE\ARC00243_0679223338.001
ORA-00280: 更改 423851 (用于線程 1) 在序列 #243 中
指定日志: {=suggested | filename | AUTO | CANCEL}
E:\ORACLE\ORASJH\REDO03.LOG
已應用的日志。
完成介質恢復。
SQL> alter database open resetlogs;
數據庫已更改。
總結
以上是生活随笔為你收集整理的oracle 11g 从rman全备中恢复控制文件,拥有RMAN全备(缺少后增文件),丢失全部数据文件,控制文件的恢复...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何给 Visual C++ 中的对话框
- 下一篇: 如何修改可执行文件的图标