歸檔模式有備份丟失控制檔案和資料檔案後恢復
說明
資料庫開啟歸檔,有資料庫RMAN備份,之後控制檔案和資料檔案丟失,但是有控制檔案備份,這種情況可以先恢復控制檔案,再恢復資料檔案,在保證歸檔檔案都存在的情況下恢復完成後資料不會丟失。
資料恢復
1 建立新的表空間、資料檔案、使用者
SQL>create tablespace ttt datafile ‘/oracle/u01/app/oracle/oradata/orcl/ttt.dbf’ size 10m; SQL>grant connect,resource to ttt identified by ttt; SQL>alter user ttt default tablespace ttt; SQL>alter user ttt account unlock; |
2 構造資料
SQL>conn ttt/ttt; SQL>create table ttt (id int); SQL> insert into ttt values(1); 1 row created. SQL> insert into ttt values(2); 1 row created. SQL> insert into ttt values(3); 1 row created. SQL> commit; Commit complete. SQL>select * from ttt; ID ---- 1 2 3 |
ttt使用者預設表空間為ttt,建立表ttt,並插入3資料。
3 切換日誌
SQL>conn / as sysdba; SQL>alter system switch logfile; |
切換日誌,保證資料都寫到DBF中。
4 備份資料庫
RMAN>backup database; |
5 再插入一些資料
SQL>conn ttt/ttt; SQL> insert into ttt values(4); 1 row created. SQL> insert into ttt values(5); 1 row created. SQL> insert into ttt values(6); 1 row created. SQL> commit; Commit complete. SQL>select * from ttt;
|
6 備份控制檔案
SQL>conn / as sysdba; SQL>alter database backup controlfile to ‘/home/oracle/control.ctl’; |
說明:這一步也可以省略,在第8步恢復控制檔案時需要用之前備份的備份集 來恢復。
執行:
RMAN> restore controlfile to '/oracle/u01/app/oracle/oradata/orcl/control01.ctl' from '/oracle/u01/app/oracle/flash_recovery_area/ORCL/backupset/2013_03_07/o1_mf_ncsnf_TAG20130307T145358_8mjgfnbg_.bkp'; |
7 模擬丟失控制檔案和資料檔案
SQL>conn / as sysdba; SQL>shutdown abort; [oracle@dev206 ~]$ rm -rf /oracle/u01/app/oracle/oradata/orcl/control0*.ctl [oracle@dev206 ~]$ rm -rf /oracle/u01/app/oracle/oradata/orcl/ttt.dbf SQL>startup SQL> startup ORA-32004: obsolete and/or deprecated parameter(s) specified ORA-32004: obsolete and/or deprecated parameter(s) specified ORACLE instance started.
Total System Global Area 1224736768 bytes Fixed Size 2020384 bytes Variable Size 352324576 bytes Database Buffers 855638016 bytes Redo Buffers 14753792 bytes ORA-00205: error in identifying control file, check alert log for more info |
此時在啟動資料庫時報錯找不到控制檔案而只能啟動到nomount狀態。
8 恢復控制檔案
之前我們trace出了控制檔案的備份
利用備份恢復控制檔案
RMAN>set dbid=1324770912 RMAN> restore controlfile to '/oracle/u01/app/oracle/oradata/orcl/control01.ctl' from '/home/oracle/control.ctl';
Starting restore at 07-MAR-13 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=540 devtype=DISK
channel ORA_DISK_1: copied control file copy Finished restore at 07-MAR-13 |
拷貝控制檔案
[oracle@dev206 oracle]$ cp /oracle/u01/app/oracle/oradata/orcl/control01.ctl /oracle/u01/app/oracle/oradata/orcl/control02.ctl [oracle@dev206 oracle]$ cp /oracle/u01/app/oracle/oradata/orcl/control01.ctl /oracle/u01/app/oracle/oradata/orcl/control03.ctl |
啟動資料庫到mount狀態
SQL>alter database mount; |
9 利用RMAN恢復資料庫
RMAN>recover database;
Starting recover at 07-MAR-13 Starting implicit crosscheck backup at 07-MAR-13 allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=543 devtype=DISK Crosschecked 2 objects Finished implicit crosscheck backup at 07-MAR-13
Starting implicit crosscheck copy at 07-MAR-13 using channel ORA_DISK_1 Finished implicit crosscheck copy at 07-MAR-13
searching for all files in the recovery area cataloging files... no files cataloged
using channel ORA_DISK_1 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of recover command at 03/07/2013 14:44:05 RMAN-06094: datafile 6 must be restored |
提示需要restore datafile 6;
SQL>restore datafile 6;
Starting restore at 07-MAR-13 using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile backupset restore channel ORA_DISK_1: specifying datafile(s) to restore from backup set restoring datafile 00006 to /oracle/u01/app/oracle/oradata/orcl/ttt.dbf channel ORA_DISK_1: reading from backup piece /oracle/u01/app/oracle/flash_recovery_area/ORCL/backupset/2013_03_07/o1_mf_nnndf_TAG20130307T142051_8mjdg42h_.bkp channel ORA_DISK_1: restored backup piece 1 piece handle=/oracle/u01/app/oracle/flash_recovery_area/ORCL/backupset/2013_03_07/o1_mf_nnndf_TAG20130307T142051_8mjdg42h_.bkp tag=TAG20130307T142051 channel ORA_DISK_1: restore complete, elapsed time: 00:00:02 Finished restore at 07-MAR-13 |
啟動資料庫
RMAN> alter database open;
RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of alter db command at 03/07/2013 14:49:32 ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
RMAN>alter database open noresetlogs;
RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-00558: error encountered while parsing input commands RMAN-01009: syntax error: found "identifier": expecting one of: "resetlogs, ;" RMAN-01008: the bad identifier was: noresetlogs RMAN-01007: at line 1 column 21 file: standard input
RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-00558: error encountered while parsing input commands RMAN-01009: syntax error: found ";": expecting one of: "allocate, alter, backup, beginline, blockrecover, catalog, change, connect, copy, convert, create, crosscheck, configure, duplicate, debug, delete, drop, exit, endinline, flashback, host, {, library, list, mount, open, print, quit, recover, register, release, replace, report, renormalize, reset, restore, resync, rman, run, rpctest, set, setlimit, sql, switch, spool, startup, shutdown, send, show, test, transport, upgrade, unregister, validate" RMAN-01007: at line 1 column 32 file: standard input
RMAN>alter database open resetlogs; |
10 檢查資料
SQL> select count(*) from ttt.ttt; ID ---------- 1 2 3 4 5 6 |
資料庫恢復完成.
說明:這個恢復過程在一定程度上就是“歸檔模式有備份丟失資料檔案後恢復——重建控制檔案”的恢復,只是沒有重建控制檔案利用了備份來恢復。
詳見:http://space.itpub.net/26252014/viewspace-755506
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26252014/viewspace-755511/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- dg丟失歸檔,使用rman增量備份恢復
- 電腦檔案丟失資料恢復資料恢復
- Oracle使用備份檔案集恢復歸檔日誌Oracle
- 從備份片中恢復某個指定得歸檔或者資料檔案
- 新建的表空間(或資料檔案)丟失以及控制檔案丟失,有新建表空間(或資料檔案)前的控制文
- 剪下的檔案還能恢復嗎,恢復剪貼丟失的檔案
- Sql Server資料庫檔案丟失的恢復方法SQLServer資料庫
- 【/proc/檔案淺析】另類辦法恢復資料檔案和控制檔案
- 【BBED】丟失歸檔檔案情況下的恢復
- 檔案的基本管理和XFS檔案系統備份恢復
- 12 使用RMAN備份和恢復檔案
- DATA GUARD主庫丟失資料檔案的恢復(3)
- DATA GUARD主庫丟失資料檔案的恢復(1)
- DATA GUARD主庫丟失資料檔案的恢復(2)
- 丟失的隨身碟檔案如何恢復?
- macOS Big Sur系統如何恢復丟失的資料檔案?Mac
- MongoDB資料庫報錯,資料庫檔案丟失資料恢復案例MongoDB資料庫資料恢復
- 【RMAN】Oracle中如何備份控制檔案?備份控制檔案的方式有哪幾種?Oracle
- 【資料庫資料恢復】mdb_catalog.wt檔案丟失的MongoDB資料恢復案例資料庫資料恢復MongoDB
- 【伺服器資料恢復】xfs檔案系統資料丟失的資料恢復案例伺服器資料恢復
- 【北亞資料恢復】MongoDB資料遷移檔案丟失的MongoDB資料恢復案例資料恢復MongoDB
- 與控制檔案有關的恢復
- 【資料庫資料恢復】Sql Server資料庫檔案丟失的資料恢復過程資料庫資料恢復SQLServer
- RMAN備份恢復典型案例——資料檔案存在壞快
- oracle控制檔案的損壞或完全丟失的恢復辦法Oracle
- 雲備份和同步檔案資料
- XFS檔案系統的備份、恢復、修復
- 實戰:xfs檔案系統的備份和恢復
- Oracle歸檔檔案丟失導致OGG不用啟動Oracle
- 與控制檔案有關的恢復(二)
- Oracle為什麼使用備份的控制檔案恢復後一定要resetlogsOracle
- 檔案丟失不用怕:超實用的Mac資料恢復軟體!Mac資料恢復
- 資料庫資料恢復—MongoDB資料庫檔案丟失,啟動報錯的資料恢復案例資料庫資料恢復MongoDB
- 【RMAN】如果控制檔案損壞那麼如何恢復?恢復控制檔案的方式有哪幾種?
- 檔案替換後怎麼恢復,恢復被覆蓋的檔案
- 世界備份日——如果您丟失了所有檔案
- 怎樣恢復Mac檔案及資料夾資料?BackupLoupe for mac(資料恢復備份助手)3.5.4Mac資料恢復
- 【虛擬機器資料恢復】Hyper-V虛擬化檔案丟失的資料恢復案例虛擬機資料恢復
- 對歸檔模式下CLEAR 未歸檔日誌後恢復資料庫的一點看法模式資料庫