rman恢復基礎操作

《三思筆記》--讀書筆記


通過rman執行數據庫恢復可以分成三個部分解讀:

(1),將數據庫置於正確的狀態:mount/open。一般整庫恢復的話需要在mount狀態操作,表空間或數據文件級的恢復也可以在open狀態下操作。

(2),執行完全或不完全恢復。完全恢復就是應用所有數據庫生成的重做日誌,不完全恢復自然就是隻應用部分重做日誌,執行不完全恢復主要是通過執行restore/recover命令時,附加until子句來限制恢復到的時間點。

(3),打開數據庫。如果恢復時執行的是不完全恢復,打開時必須指定resetlogs。


一、對數據庫進行完全介質恢復

如果當前數據庫只剩下控制文件和spfile,其他數據文件因爲某些原因導致全部丟失,不過幸運的是之前創建過整庫的備份,並且執行備份操作之後,所有的歸檔文件和重做日誌文件都還在,這種情況下就可以將數據庫恢復到崩潰前那一刻,這種恢復方式叫做完全介質恢復。

三個步驟:

(1),啓動數據庫到加載狀態

startup mount;

(2),執行恢復操作(恢復分爲2步,有先有後)

restore database;

recover database delete archivelogs skip tablespace temp;

執行recover命令時後面的delete archivelogs表示rman將在完成恢復後自動刪除那些在恢復過程中產生的歸檔日誌文件,他只刪除那些由他產生的歸檔文件,至於執行restore/recover之前的歸檔不會動。

skip tablespace temp指定跳過表空間,如臨時表空間

(3),打開數據庫

alter database open;

上述操作是數據庫在歸檔模式下進行的,如果是非歸檔模式的話,執行restore命令前,首先需要恢復之前備份的控制文件,並且在執行了restore和recover命令後,必須以open resetlogs方式打開數據庫

rman備份的時候並不會備份臨時表空間的數據文件,rman在執行整庫恢復時,會自動創建臨時表空間的數據文件

二、恢復表空間和數據文件

恢復表空間

在恢復之前,如果表空間未處於offline狀態,需要使用alter tablespace ... offline置於脫機

sql 'alter tablespace cindy offline immediate ';

restore tablespace cindy;

recover tablespace cindy;

sql 'alter tablespace cindy online ';

如果有多個表空間,相互之間用逗號隔開,不過將表空間置爲offline/online的時候,腳本不能合併

恢復數據文件

操作步驟同恢復表空間的命令,只是置於offline的命令不一樣

alter database datafile cindy offline

如果由於磁盤損壞導致數據文件無法訪問,那麼恢復時數據文件可能無法再恢復到原路徑,必須在執行restore命令之前,給數據文件指定新的路徑,方式如下

run{

set newname for datafile 3 to 'f:\oracle\cindy.dbf';

restore datafile 3;

swich datafile 3;

recover datafile 3;

}


(三)恢復歸檔日誌文件

恢復歸檔文件也是使用restore命令,如果只是爲了在恢復數據文件後應用歸檔文件,那並不需要手動對歸檔文件進行恢復,rman會在recover的時候自動對適當的歸檔進行恢復

,可以精確指定恢復哪些備份的歸檔文件,例如,恢復歸檔序列號爲20到30之間的歸檔文件

restore archivelog sequence between 20 and 30;

默認情況下,rman將歸檔文件恢復到初始化參數log_archive_dest_1的路徑下

可以手動設置其他路徑,同一個run塊中允許同時出現多個set archivelog命令

run{

set archivelog destination to 'F:\ORACLE\BACKUP\ARCLOG1';

restore archivelog sequence between 35 and 40;

set archivelog destination to 'F:\ORACLE\BACKUP\ARCLOG2';

restore archivelog sequence between 41 and 50;

set archivelog destination to 'F:\ORACLE\BACKUP\ARCLOG3';

restore archivelog sequence between 51 and 60;

}

 

恢復控制文件和spfile初始化參數文件
1,從自動備份中恢復

由於沒了控制文件,目標數據庫只能啓動到nomount狀態,不過在啓動數據庫之前,必須首先通過set命令設置dbid

set dbid = 4252637343;

啓動數據庫到nomount狀態

startup nomount;

從自動備份中恢復控制文件

恢復到默認路徑下

restore controlfile from autobackup;

恢復到指定路徑下

restore controlfile to 'f:\oracle\control01.ctl' from autobackup;

這條命令也可以在數據庫open時執行,只要被恢復的路徑不是當前數據庫控制文件所在路徑就行

2,從備份集中恢復

從10g開始,restore直接提供了from backup子句,這樣就可以直接從指定備份片段中恢復控制文件(只要確保指定的備份集中包含控制文件),操作方式與之前的示例非常類似

在啓動數據庫之前需要先設置DBID

set dbid = 4252637343;

啓動數據庫到nomount狀態

startup nomount;

指定restore命令時指定控制文件所在備份片段的詳細路徑

restore controlfile from 'f:\oracle\backup\c-4252637343-20090413-00';

這裏也可以指定恢復的路徑

恢復服務器端初始化參數文件

這個恢復和控制文件的恢復類似

在啓動數據庫之前需要先設置DBID

set dbid = 4252637343;

啓動數據庫到nomount狀態

startup nomount;(sqlplus中無法啓動到nomount,但是rman中可以)

restore spfile from autobackup;

或者指定路徑

restore spfile to '/tmp/spfiletemp.ora' from autobackup;

或者從指定備份文件路徑恢復

restore spfile to '/tmp/spfiletemp.ora' from ‘/u02/data/backup/c-4252637343-20090413-00'; ;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章