rman的一點簡單總結 1

xfhuangfu發表於2015-07-04

rman的一些簡單總結

1:控制檔案自動備份

用 show all 檢視當前的配置,配置控制檔案自動備份的命令如下:

RMAN> configure controlfile autobackup on;

在開啟了控制檔案自動備份之後,oracle會在資料庫結構改變時(增加、刪除表空間及資料檔案等),自動備份控制檔案及spfile檔案

當我們手動建立一個tt表空間後,此時可以在 alert.log 中找到如下資訊

+++++++++++++++++++++++++++++++

Control autobackup written to DISK device
    handle 'C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\AUTOBACKUP\2012_11_01\O1_MF_S_798220671_894BVZ89_.BKP'
Completed: create tablespace TT datafile 'C:\ORADATA\WIN10G\tt.dbf' size 100m

++++++++++++++++++++++++++++++++


在這裡要注意,如果你的資料庫版本是oracle 10g ,並且開啟了 閃回恢復區,那麼控制檔案的備份儲存在自動備份的恢復目錄中,
目錄位置為 $ORACLE_HOME\flash_recovery_area\WIN10G\AUTOBACKUP  ;  如果資料庫是9i、或者10g沒有開啟閃回恢復區,那麼
自動備份儲存在 $ORACLE_HOME\database下 ,這些資訊仍可以從alert.log 中得到

++++++++++++++++++++++++++++++++++

Fri Nov 02 09:00:01 2012
Starting control autobackup
Control autobackup written to DISK device
    handle 'C:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\C-605134997-20121102-00'

+++++++++++++++++++++++++++++++++


在這裡可以看到 自動備份的控制檔名為 C-605134997-20121102-0  (其中 C 為控制檔案、605134997為dbid、20121102為時間戳、00為序號)

因為這些資訊儲存在控制檔案中,可以將控制檔案轉儲出來看下控制檔案是如何記錄這部分資訊的

SQL> alter session set events 'immediate trace name controlf level 8';

然後根據pid、spid 到 udump中找到相關trace檔案。



2:從自動備份恢復spfile和控制檔案(以下測試db為10.2.0.1)


在資料庫的三種檔案完好的情況下,不論db處於哪種狀態,通常都是先恢復到一個臨時目錄下,以免覆蓋當前檔案,確認後再轉移到預設目錄下面;
如果自動備份有多個,恢復的時候使用最新的autobackup


RMAN> restore spfile to 'C:\spfile.ora' from autobackup;

RMAN> restore controlfile  to 'C:\control01.ctl' from autobackup;


如果db都不能nomount 了,那麼此時可以臨時編輯一個pfile檔案啟動例項,然後進行spfile恢復,
restore命令後加上備份集的名稱



3:rmnan的備份策略


基於冗餘(redundancy):定義一個數字n用於標示rman為每個檔案保留至少n個不同的備份

RMAN> configure retention policy to redundancy 1;



基於恢復視窗(recovery window):定義一個時間長度,以便在定義的時間長度內可以進行基於任何時間點的恢復

RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 14 DAYS;


當備份超過了備份策略設定的規則時,備份會標記為廢棄(obsolete),但這只是在rman目錄中標記為丟棄(obsolete),
其狀態依然為 available;  要檢視標記為obsolete狀態的備份,可以使用 report obsolete 命令 ,只有使用
delete  obsolete 才會真正刪除丟棄的備份





RMAN> report obsolete;

RMAN 保留策略將應用於該命令
將 RMAN 保留策略設定為冗餘 1
已廢棄的備份和副本報表
型別                 關鍵字 完成時間           檔名/控制程式碼
-------------------- ------ ------------------ --------------------
控制檔案副本     3      02-11月-12         C:\CONTROL01.CTL
備份集               22     02-11月-12
備份段       22     02-11月-12         C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_A
REA\WIN10G\BACKUPSET\2012_11_02\O1_MF_NNNDF_TAG20121102T105520_896FJS89_.BKP
備份集               23     02-11月-12
備份段       23     02-11月-12         C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_A
REA\WIN10G\AUTOBACKUP\2012_11_02\O1_MF_S_798288936_896FK8PG_.BKP



RMAN> delete noprompt obsolete;

RMAN 保留策略將應用於該命令
將 RMAN 保留策略設定為冗餘 1

。。。。。。。。。。。。。。



如果想恢復某一個設定到預設狀態,使用如下命令

RMAN> configure retention policy clear;




4:歸檔日誌維護及crosscheck命令

當不小心手動刪除某些備份後,rman將無法找到這些檔案,但是這些備份的檔案依然在rman的記錄中存在,
因此需要使用crosscheck命令去磁碟上檢查這些檔案是否存在,如果不再存在,rman會將檔案標記為
expired ,然後這些資訊就可以被清除。



RMAN> crosscheck backup;

RMAN> delete expired backup;




RMAN> crosscheck archivelog all;

RMAN> delete noprompt expired archivelog all;



RMAN> list backup of archivelog from sequence 12;

RMAN> delete noprompt archivelog until sequence = 12;


RMAN> list backup of archivelog until  time 'sysdate-2';

RMAN> delete noprompt archivelog until time 'sysdate-1';


RMAN> list backupset of database tag='HOT_DB_BK_LEVEL0';


5:resetlogs 和 noresetlogs方式的含義


-- Below are two sets of SQL statements, each of which creates a new
-- control file and uses it to open the database. The first set opens
-- the database with the NORESETLOGS option and should be used only if
-- the current versions of all online logs are available. The second
-- set opens the database with the RESETLOGS option and should be used
-- if online logs are unavailable.



6:rman的映象copy功能


rman映象複製是單個資料檔案、歸檔日誌或控制檔案的額外複製,不以rman的格式儲存。

映象複製的檔案和執行作業系統級別複製的檔案一樣,以資料檔案的固有格式儲存,rman

進行重建或恢復時,可以使用映象複製。


複製(copy)的控制檔案是當前控制檔案的一個原樣副本,可以直接用於啟動資料庫,

而rman的控制檔案備份則需要透過rman進行恢復使用。


當發出restore命令時,預設的rman恢復一個資料檔案或控制檔案的映象複製到原來的位置,

映象複製優先於備份集被採用,因為使用備份集進行恢復時,會有額外的開銷。並且,如果

需要使用映象複製恢復資料檔案或控制檔案,無須把檔案copy到原來的位置,rman中的switch命

令可以通知資料庫使用當前位置的檔案,這類似於alter  database rename file命令的功能 。



RMAN> backup current controlfile format 'C:\control%s.ctl';  //控制檔案備份集


RMAN> backup as copy  current controlfile format 'C:\control%s.ctl';  // 控制檔案映象複製


使用映象複製命令來備份整個資料庫

RMAN> backup as copy tag 'win10g_copy' database;


也可以使用rman的映象複製命令備份單個或多個資料檔案


RMAN> copy datafile 6 to 'C:\tt_copy.dbf';


RMAN> run{
copy datafile 1 to 'C:\system01.dbf',
current controlfile to 'C:\control01.dbf',
datafile 6 to 'C:\tt01.dbf';
}
 


可以透過list copy命令顯示資料庫中的映象複製,

如果不小心刪除了映象複製(copy),那麼首先需要進行

RMAN> crosscheck copy;

RMAN> delete copy;



假設由於硬體故障導致資料檔案tt.dbf損壞,這時需要在run中透過

set newname命令 指定檔案恢復到不同的位置


RMAN> startup  mount

RMAN> run{
 set newname for datafile 6 to 'C:\oradata\tt.dbf';
 restore datafile 6;
 switch datafile all;
 recover datafile 6;
}

正在執行命令: SET NEWNAME

啟動 restore 於 07-11月-12
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=157 devtype=DISK

通道 ORA_DISK_1: 正在恢復資料檔案00006
輸入資料檔案副本 recid=24 stamp=798719925 檔名=C:\ORACLE\PRODUCT\10.2.0\FLASH_
RECOVERY_AREA\WIN10G\DATAFILE\O1_MF_TT_89MLFN5C_.DBF
資料檔案 00006 的恢復目標: C:\ORADATA\TT.DBF
通道 ORA_DISK_1: 已複製資料檔案 00006 的資料檔案副本
輸出檔名=C:\ORADATA\TT.DBF recid=27 stamp=798721262
完成 restore 於 07-11月-12

資料檔案 6 已轉換成資料檔案副本
輸入資料檔案副本 recid=28 stamp=798721264 檔名=C:\ORADATA\TT.DBF

啟動 recover 於 07-11月-12
使用通道 ORA_DISK_1

正在開始介質的恢復
介質恢復完成, 用時: 00:00:00

完成 recover 於 07-11月-12

RMAN>

RMAN> alter database open;

資料庫已開啟




驗證備份的有效性,可以使用

RMAN> restore validate database;

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

相關文章