只有rman備份集,控制檔案丟失的恢復
====================
資訊可以使用catalog庫存放,如果不配置catalog庫則只能使用控制檔案進行替代,所以控制檔案在資料庫備份中的重要性比較高。
避免控制檔案丟失可以設定控制檔案自動備份,也可以在指令碼中單獨備份控制檔案,另外全庫備份中葉包含控制檔案,版本較高的rdbms還能在回覆區中找到控制檔案的映象,以上方式都找不到控制檔案則只能手動建立控制檔案
一旦手動重新建立,控制檔案中的備份資訊也就丟失,這是就需要是用dbms_backup_restore包進行恢復
透過包dbms_backup_restore,在不是用catalog庫或者控制檔案的情況下仍然可以從備份集中讀取資料庫檔案,做到資料恢復
如下測試及為資料檔案、控制檔案,線上日誌檔案,歸檔日誌檔案都丟失,只有rman備份的情況下資料庫的恢復
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Database Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
備份集
D:\oracle\product\10.2.0\flash_recovery_area\AN10\BACKUPSET\2008_04_10\O1_MF_NNNDF_TAG20080410T100316_3ZTXC5PY_.BKP
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 209715200 bytes
Fixed Size 1248116 bytes
Variable Size 71304332 bytes
Database Buffers 130023424 bytes
Redo Buffers 7139328 bytes
透過指令碼恢復資料檔案
SQL> declare
2 devtype varchar2(256);
3 done boolean;
4 begin
5 devtype:=sys.dbms_backup_restore.deviceAllocate (type=>'',ident=>'t1');
6 sys.dbms_backup_restore.restoreSetDatafile;
7 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>01,
8 toname=>'D:\ORACLE\PRODUCT\10.2.0\ORADATA\AN10\SYSTEM01.DBF');
9 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>02,
10 toname=>'D:\ORACLE\PRODUCT\10.2.0\ORADATA\AN10\UNDOTBS01.DBF');
11 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>03,
12 toname=>'D:\ORACLE\PRODUCT\10.2.0\ORADATA\AN10\SYSAUX01.DBF');
13 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>04,
14 toname=>'D:\ORACLE\PRODUCT\10.2.0\ORADATA\AN10\USERS01.DBF');
15 sys.dbms_backup_restore.restoreBackupPiece(done=>done,
16 handle=>'D:\oracle\product\10.2.0\flash_recovery_area\AN10\BACKUPSET\2008_0
4_10\O1_MF_NNNDF_TAG20080410T100316_3ZTXC5PY_.BKP',params=>null);
17 sys.dbms_backup_restore.deviceDeallocate;
18 end;
19 /
PL/SQL procedure successfully completed.
SQL>
SQL>
SQL>
SQL>
SQL>
SQL> CREATE CONTROLFILE REUSE DATABASE "AN10" NORESETLOGS ARCHIVELOG
2 MAXLOGFILES 16
3 MAXLOGMEMBERS 3
4 MAXDATAFILES 100
5 MAXINSTANCES 8
6 MAXLOGHISTORY 292
7 LOGFILE
8 GROUP 1 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\AN10\REDO01.LOG' SIZE 5M,
9 GROUP 2 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\AN10\REDO02.LOG' SIZE 5M,
10 GROUP 3 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\AN10\REDO03.LOG' SIZE 5M
11 -- STANDBY LOGFILE
12 DATAFILE
13 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\AN10\SYSTEM01.DBF',
14 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\AN10\UNDOTBS01.DBF',
15 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\AN10\SYSAUX01.DBF',
16 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\AN10\USERS01.DBF'
17 -- 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\AN10\AN.DBF'
18 CHARACTER SET ZHS16GBK
19 ;
CREATE CONTROLFILE REUSE DATABASE "AN10" NORESETLOGS ARCHIVELOG
*
ERROR at line 1:
ORA-01503: CREATE CONTROLFILE failed
ORA-01565: error in identifying file
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\AN10\REDO01.LOG'
ORA-27041: unable to open file
OSD-04002: ????????????
O/S-Error: (OS 2) ??????????????????????
找不到redo日誌,這時手動建立適合大小的redo,並再次建立控制檔案
SQL> /
Control file created.
由於臨時表空間不進行備份,所以恢復的時候需要重新建立臨時表空間
但必須是在資料庫開啟的情況下
SQL> ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\AN10\T
EMP01.DBF'
2 SIZE 20971520 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\AN10\TEMP01
.DBF'
*
ERROR at line 1:
ORA-01109: database not open
SQL> recover database using backup controlfile until cancle;
ORA-00277: illegal option to the UNTIL recovery flag CANCLE
SQL> recover database using backup controlfile until cancel;
ORA-00279: change 292666 generated at 04/10/2008 10:03:17 needed for thread 1
ORA-00289: suggestion :
D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\AN10\ARCHIVELOG\2008_04_10\O1_MF_1_
221_%U_.ARC
ORA-00280: change 292666 for thread 1 is in sequence #221
Specify log: {
auto
ORA-00308: cannot open archived log
'D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\AN10\ARCHIVELOG\2008_04_10\O1_MF_1
_221_%U_.ARC'
ORA-27041: unable to open file
OSD-04002: ????????????
O/S-Error: (OS 2) ??????????????????????
ORA-00308: cannot open archived log
'D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\AN10\ARCHIVELOG\2008_04_10\O1_MF_1
_221_%U_.ARC'
ORA-27041: unable to open file
OSD-04002: ????????????
O/S-Error: (OS 2) ??????????????????????
SQL>
SQL>
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
SQL> alter database open resetlogs;
Database altered.
SQL>
SQL>
ALTER TABLESPACE TEMP ADD TEMPFILE
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\AN10\TEMP01.DBF' SIZE 20971520 REUSE
AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
Tablespace altered.
這樣就把資料庫恢復。
---------------------------
come from:http://space.itpub.net/13177610/viewspace-676332
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/90618/viewspace-680743/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- rman備份丟失控制檔案恢復
- 控制檔案丟失的RMAN恢復
- 丟失全部控制檔案後從RMAN備份集中恢復示例
- Oracle RMAN 不完全恢復(只有資料檔案備份,丟失歸檔日誌備份)Oracle
- 【rman 備份與恢復】恢復丟失所有的控制檔案
- rman恢復--歸檔模式有備份,丟失資料檔案的恢復模式
- rman恢復--歸檔模式無備份,丟失資料檔案的恢復模式
- 【備份恢復】所有控制檔案丟失後 利用trace中的控制檔案備份執行恢復
- 【備份恢復】 丟失一個控制檔案 之恢復操作
- RMAN基於備份控制檔案恢復失敗
- 恢復之丟失全部控制檔案以及備份中的控制檔案
- 非歸檔無備份下控制檔案丟失的恢復
- 備份恢復實驗(1)丟失部分控制檔案
- 【備份恢復】丟失所有控制檔案,利用RMAN進行恢復操作
- dg丟失歸檔,使用rman增量備份恢復
- RMAN備份恢復之控制檔案的恢復(三)
- RMAN備份恢復之控制檔案的恢復(二)
- RMAN備份恢復之控制檔案的恢復(一)
- 【備份恢復】歸檔模式下丟失系統關鍵資料檔案 利用RMAN備份恢復模式
- rman恢復--丟失控制檔案的恢復
- Oracle備份與恢復【丟失控制檔案的恢復】Oracle
- 控制檔案丟失恢復
- 【控制檔案丟失恢復】
- 恢復丟失的控制檔案
- 無備份丟失部分資料檔案和控制檔案恢復 [轉]
- Oracle備份與恢復【丟失資料檔案的恢復】Oracle
- 備份恢復之資料檔案丟失
- RMAN - "丟失控制檔案的恢復"
- 【備份恢復】恢復 丟失已歸檔重做日誌檔案
- 恢復之利用備份在所有控制檔案丟失情況下恢復(四)
- 恢復之利用備份在所有控制檔案丟失情況下恢復(三)
- 恢復之利用備份在所有控制檔案丟失情況下恢復(二)
- 恢復之利用備份在所有控制檔案丟失情況下恢復(一)
- 控制檔案全部丟失的恢復
- 控制檔案部分丟失的恢復
- 控制檔案丟失恢復(二)
- 控制檔案全部丟失恢復
- RMAN資料庫恢復 之歸檔模式有(無)備份-丟失資料檔案的恢復資料庫模式