Oracle數據庫rman恢復之system表空間恢復是本文我們主要要介紹的內容,system表空間存放著數據字典的信息。當數據庫處於open狀態,如果system表空間所對應的數據文件出現介質失敗,那麼當在其數據文件上執行I/O操作時,數據庫會自動關閉;當數據庫處於關閉狀態時,如果system表空間所對應的數據文件出現介質失敗,數據庫將不能打開。恢復system表空間必須在mount狀態下進行。
示例一:system表空間的數據文件被誤刪除備份數據庫。
刪除system表空間對應的數據文件。啟動數據庫到mount狀態。使用restore datafile轉儲數據文件,並使用recover datafile命令應用歸檔日志,最後使用alter database open打開數據庫。
--備份數據庫(略)
--刪除system表空間對應的數據文件
- RMAN> host rm $Oracle_BASE/product/10.2.0/oradatabak/system01.dbf
- RMAN> startup
- connected to target database (not started)
- Oracle instance started
- database mounted
- RMAN-00571: ===========================================================
- RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
- RMAN-00571: ===========================================================
- RMAN-03002: failure of startup command at 08/22/2011 21:56:39
- ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
- ORA-01110: data file 1: '/oracle/10g/Oracle/product/10.2.0/oradatabak/system01.dbf'
- SQL> select file#,error from v$recover_file;
- FILE# ERROR
- ---------- -----------------------------------------------------------------
- 1 FILE NOT FOUND
- SQL> select file#,name from v$datafile where file#=1;
- FILE# NAME
- ---------- ------------------------------------------------------------------------------------------------------------------------
- 1 /oracle/10g/Oracle/product/10.2.0/oradatabak/system01.dbf
--啟動數據庫到mount狀態並進行恢復
- RMAN> run {
- 2> startup force mount;
- 3> restore datafile 1;
- 4> recover datafile 1;
- 5> sql 'alter database open';
- 6> }
示例二:system表空間數據文件所在磁盤出現故障
備份數據庫(略)刪除system表空間對應的數據文件。啟動數據庫到mount狀態。在restore database之前,執行set newname為數據文件指定新的位置。在restore database之後,執行switch datafile改變控制文件中數據文件位置和名稱。之後通過執行recover database應用歸檔日志。最後執行alter database open打開數據庫。
--備份數據庫(略)
--刪除system表空間對應的數據文件
- RMAN> host 'rm /oracle/10g/Oracle/product/10.2.0/oradatabak/system01.dbf'
- 2> ;
--啟動數據庫到mount狀態並進行恢復(為數據文件指定新位置,轉儲數據文件,恢復數據文件,打開數據庫)
- RMAN> run {
- 2> startup force mount;
- 3> set newname for datafile 1 to '/oracle/10g/Oracle/product/10.2.0/oradata/oralife/system01.dbf';
- 4> restore datafile 1;
- 5> switch datafile 1;
- 6> recover datafile 1;
- 7> sql 'alter database open';
- 8> }
關於Oracle數據庫rman恢復之system表空間恢復的相關知識就介紹到這裡了,希望本次的介紹能夠對您有所收獲!