RMAN恢復表空間,資料檔案,歸檔檔案,控制檔案等介紹

與刃爭鋒發表於2013-12-30
恢復表空間和資料檔案
執行表空間或資料檔案級的恢復時,資料庫既可以是mount狀態,也可以是open狀態.從表空間和資料檔案的自身特點來說,兩者恢復也類似,只不過資料檔案相對來說粒度更細.

恢復表空間
表空間必須為offline狀態:
rman>sql 'alter tablespace users offline immediate';
rman>restore tablespace users;
rman>recover tablespace users;
rman>sql  'alter tablespace users online';
如果一次恢復多個表空間,只需要在執行restore/recover時同時指定多個表空間名稱即可,用逗號,分隔,但將表空間offline/online得一個一個改.

恢復資料檔案
恢復表空間實際上就是恢復其對應的資料檔案(一個表空間可能對應多個資料檔案)
rman>sql 'alter database datafile 10 offline';
or
sql>alter database datafile 'D:\oracle\product\10.2.0\oradata\bob\users01.dbf' offline;

在執行restore/recover操作指定資料檔案時,指定資料檔案的序號和指定資料檔案的詳細路徑,都可以. 
rman>restore datafile 10;
rman>restore datafile 'D:\oracle\product\10.2.0\oradata\bob\users01.dbf';


rman>recover datafile 10;
rman>recover datafile 'D:\oracle\product\10.2.0\oradata\bob\users01.dbf';

rman>sql 'alter databsase datafile 10 online'; 
or
sql>alter database datafile 'D:\oracle\product\10.2.0\oradata\bob\users01.dbf' online;

這是簡單的恢復,資料檔案會被恢復到預設的位置.如果磁碟壞了,那就得指定新的資料檔案路徑了,同樣要將資料檔案改為offline狀態. 
rman>run {
    set newname for datafile 10 to 'D:\NEWPATH\users01.dbf';
    restore datafile 10;
    switch datafile 10;
    recover datafile 10;
                }
select * from v$datafile




恢復歸檔日誌檔案
恢復歸檔檔案也是用restore命令,如果只是為了在恢復資料檔案後應用歸檔檔案,那並不需要手動對歸檔檔案進行恢復,rman會在recover的時候自動對適當的歸檔進行恢復.
單獨恢復歸檔檔案一般是建立了Data Guard環境,Standby端丟失了部分歸檔檔案,必須從Primary端重新獲取,或者用LogMiner對之前的歸檔進行分析等.

恢復歸檔日誌檔案也非常靈活,rman的recover命令中提供了多種限定條件,可以精確指定恢復哪些備份的歸檔檔案,例如:恢復歸檔序號為20到30的歸檔檔案:
rman>restore archivelog sequence between 20 and 30;
預設情況下rman將歸檔檔案恢復到初始化引數log_archive_dest_1指定的路徑下,如果想將恢復出來的歸檔儲存到其他路徑下,使用:
rman>run {
    set archivelog destination to 'D:\oracle\bobbackup\arclog';
    restore archivelog sequence between 35 and 50;
                }
這樣,恢復出來的sequenct序號為35~50的歸檔檔案就被儲存到新目錄D:\oracle\bobbackup\arclog下.同一個run塊允許同時出現多個set archivelog命令,將歸檔恢復到不同的目錄:
rman>run {
    set archivelog destination to 'D:\oracle\bobbackup\arclog1';
    restore archivelog sequence between 15 and 20;
    set archivelog destination to 'D:\oracle\bobbackup\arclog2';
    restore archivelog sequence between 21 and 30;
    set archivelog destination to 'D:\oracle\bobbackup\arclog3';
    restore archivelog sequence between 31 and 40;
                }
                
恢復控制檔案and初始化引數spfile檔案
1.從自動備份中恢復
沒了控制檔案,你只能nomount狀態,啟動db之前必須先set命令設定DBID:
rman>set dbid=13834161

如何獲得目標資料庫的DBID?
    要獲得目標資料庫的DBID,多種查詢,比如建立自動備份時,檔名中會包含DBID;或檢視之前聲稱的rman備份日誌,當使用rman登入目標資料庫會首先輸出目標資料庫的DBID; 或者連線到目標資料庫之後,查詢v$database檢視.
    select dbid from v$database
    
啟動資料庫到nomount狀態:
rman>startup nomount;
從自動備份中恢復控制檔案,恢復預設路徑:
rman>restore controlfile from autobackup;
執行上述語句後,備份集中的控制檔案被恢復到初始化引數control_files指定的路徑下
恢復到指定路徑下:
rman>restore controlfile to 'D:\newpath\control01.ctl' from autobackup;
執行上述語句可將控制檔案恢復到指定路徑下並可命名為control01.ctl,資料庫open時也可以執行,但路徑要與當前資料庫控制檔案路徑不同.

如果你執行備份操作前,修改過自動備份的預設路徑,那麼此時執行上述命令會提示你找不到備份檔案,需重新設定一下自動備份路徑,或手動複製自動備份的控制檔案到當前預設路徑下,預設是在$ORACLE_HOME/database,如果是linux/unix那就是在$ORACLE_HOME/dbs目錄.

在nocatalog模式下修改控制檔案的自動備份儲存路徑時,不要使用configure,因為configure進行的配置為永久配置,要用set命令配置控制檔案自動備份的路徑.
例如,使用set命令設定控制檔案自動備份的路徑:
rman>set controlfile autobackup format for device type disk to 'D:\oracle\backup\%F';
然後執行restore命令,從自動備份中恢復控制檔案即可:
rman>restore controlfile from autobackup;




2.從備份集中恢復
10g開始restore直接提供了from backup字句,可直接從指定備份片段中恢復控制檔案.
先set設定DBID:
rman>set dbid=13834161


rman>startup nomount;
執行restore指定控制檔案所在備份片段的路徑:
rman>restore controlfile from 'D:\oraclebackup\BOB_30_%P_C-13834161-20131230-10';


!使用備份的控制檔案進行恢復後,必須recover database,並以open resetlogs方式開啟資料庫.














rman>
rman>

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25025926/viewspace-1065707/,如需轉載,請註明出處,否則將追究法律責任。

相關文章