Oracle數據庫REAN恢復之數據文件的恢復是本文我們主要要介紹的內容,我們知道,除了system表空間的數據文件(mount)之外,其它數據文件可以在open(mount也可以)狀態下恢復。open狀態下恢復數據文件可以減少數據庫停用的時間,所以應該在open狀態下恢復這些數據文件。
示例一:數據文件被誤刪除
數據庫關閉狀態下刪除非系統表空間數據文件。
啟動數據庫到mount狀態。
脫機丟失的數據文件,alter database datafile n offline。
打開數據庫,alter database open。
轉儲數據文件,restore datafile n。
使用recover datafile n 應用歸檔日志。
聯機數據文件,alter database datafile n online。
--數據庫關閉狀態下刪除非系統表空間數據文件。
- [oracle@localhost ~]$ rm $Oracle_BASE/product/10.2.0/oradatabak/example01.dbf;
- SQL> select file#,error from v$recover_file;
- FILE# ERROR
- ---------- -----------------------------------------------------------------
- 5 FILE NOT FOUND
- SQL> select file#,name from v$datafile where file#=5;
- FILE# NAME
- ---------- --------------------------------------------------------------------------------
- 5 /oracle/10g/Oracle/product/10.2.0/oradatabak/example01.dbf
- --恢復數據文件
- RMAN> run {
- startup force mount;
- sql 'alter database datafile 5 offline';
- sql 'alter database open';
- restore datafile 5;
- recover datafile 5;
- sql 'alter database datafile 5 online';
- 8> }
示例二:數據文件所在磁盤出現損壞
數據庫關閉狀態下刪除非系統表空間數據文件。
啟動數據庫到mount狀態。
脫機丟失的數據文件,alter database datafile n offline。
打開數據庫,alter database open。
在restore database之前,執行set newname為數據文件指定新的位置。
在restore database之後,執行switch datafile改變控制文件中數據文件位置和名稱。
之後通過執行recover database應用歸檔日志。
聯機數據文件,alter database datafile n online。
--數據庫關閉狀態下刪除非系統表空間數據文件。
- [oracle@localhost ~]$ rm $Oracle_BASE/product/10.2.0/oradatabak/example01.dbf;
- SQL> select file#,error from v$recover_file;
- FILE# ERROR
- ---------- -----------------------------------------------------------------
- 5 FILE NOT FOUND
- SQL> select file#,name from v$datafile where file#=5;
- FILE# NAME
- ---------- --------------------------------------------------------------------------------
- 5 /oracle/10g/Oracle/product/10.2.0/oradatabak/example01.dbf
- --恢復數據文件
- [oracle@localhost ~]$ rman target sys/Oracle@oralife nocatalog
- RMAN> run {
- 2> startup force mount;
- 3> sql 'alter database datafile 5 offline';
- 4> sql 'alter database open';
- 5> set newname for datafile 5 to '$Oracle_BASE/product/10.2.0/oradata/oralife/example01.dbf';
- 6> restore datafile 5;
- 7> switch datafile 5;
- 8> recover datafile 5;
- 9> sql 'alter database datafile 5 online';
- 10> }
- SQL> select file#,name from v$datafile where file#=5;
- FILE# NAME
- ---------- --------------------------------------------------------------------------------
- 5 /oracle/10g/Oracle/product/10.2.0/oradata/oralife/example01.dbf
- SQL> select file#,error from v$recover_file;
- no rows selected
關於Oracle數據庫RMAN恢復之數據文件的恢復的相關知識就介紹到這裡了,希望本次的介紹能夠對您有所收獲!