程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle數據庫RMAN恢復之數據文件的恢復詳解

Oracle數據庫RMAN恢復之數據文件的恢復詳解

編輯:Oracle數據庫基礎

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。

--數據庫關閉狀態下刪除非系統表空間數據文件。   

  1. [oracle@localhost ~]$  rm $Oracle_BASE/product/10.2.0/oradatabak/example01.dbf;    
  2. SQL> select file#,error from v$recover_file;      
  3. FILE# ERROR    
  4. ---------- -----------------------------------------------------------------     
  5. 5 FILE NOT FOUND    
  6. SQL> select file#,name from v$datafile where file#=5;    
  7. FILE# NAME    
  8. ---------- --------------------------------------------------------------------------------     
  9. 5 /oracle/10g/Oracle/product/10.2.0/oradatabak/example01.dbf    
  10. --恢復數據文件     
  11. RMAN> run {    
  12. startup force mount;    
  13. sql 'alter database datafile 5 offline';    
  14. sql 'alter database open';    
  15. restore datafile 5;    
  16. recover datafile 5;    
  17. sql 'alter database datafile 5 online';    
  18. 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。

--數據庫關閉狀態下刪除非系統表空間數據文件。   

  1. [oracle@localhost ~]$  rm $Oracle_BASE/product/10.2.0/oradatabak/example01.dbf;    
  2.  
  3. SQL> select file#,error from v$recover_file;      
  4.  
  5. FILE# ERROR    
  6.  
  7. ---------- -----------------------------------------------------------------     
  8.  
  9. 5 FILE NOT FOUND    
  10.  
  11. SQL> select file#,name from v$datafile where file#=5;    
  12.  
  13. FILE# NAME    
  14.  
  15. ---------- --------------------------------------------------------------------------------     
  16.  
  17. 5 /oracle/10g/Oracle/product/10.2.0/oradatabak/example01.dbf    
  18.  
  19. --恢復數據文件     
  20.  
  21. [oracle@localhost ~]$ rman target sys/Oracle@oralife nocatalog    
  22.  
  23. RMAN> run {    
  24.  
  25. 2> startup force mount;    
  26.  
  27. 3> sql 'alter database datafile 5 offline';    
  28.  
  29. 4> sql 'alter database open';    
  30.  
  31. 5> set newname for datafile 5 to '$Oracle_BASE/product/10.2.0/oradata/oralife/example01.dbf';    
  32.  
  33. 6> restore datafile 5;    
  34.  
  35. 7> switch datafile 5;    
  36.  
  37. 8> recover datafile 5;    
  38.  
  39. 9> sql 'alter database datafile 5 online';    
  40.  
  41. 10> }    
  42.  
  43. SQL> select file#,name from v$datafile where file#=5;    
  44.  
  45. FILE# NAME    
  46.  
  47. ---------- --------------------------------------------------------------------------------     
  48.  
  49. 5 /oracle/10g/Oracle/product/10.2.0/oradata/oralife/example01.dbf    
  50.  
  51. SQL> select file#,error from v$recover_file;      
  52.  
  53. no rows selected  

關於Oracle數據庫RMAN恢復之數據文件的恢復的相關知識就介紹到這裡了,希望本次的介紹能夠對您有所收獲!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved