rman技術速查手冊(轉載)

chance2000發表於2006-03-26
rman技術速查手冊[@more@]
發表人:yaanzy | 發表時間: 2005年四月05日, 14:43

1、配置catalog恢復目錄
create tablespace ts_rman datafile='d:oratestrman.dbf' size=100M;
create user rman identified by rman default tablespace ts_rman;
grant connect ,resource , RECOVERY_CATALOG_OWNER to rman;

連線到目標資料庫和CATALOG資料庫
rman target / catalog

建立CATALOG使用者的表
rman>create catalog

登記目標資料庫:
rman>register database

解除登記資料庫(在恢復目錄資料庫上執行)
SQL> select db_key,dbid from rc_database --查出dbid
SQL> execute dbms_rcvcat.unregisterdatabase(db_key, db_id);

刪除CATALOG使用者的表
rman>drop catalog;

2、rman備份方案

採用多級備份是為了減少了恢復所需要的時間和減少每天備份所需要的時間,而又保證系統有很好的恢復性。
以下是一種建議的方案:

每半年做一個資料庫的全備份(包含只讀表空間)
每個月做一次零級備份(不包含只讀表空間)
每個星期做一次一級備份
每天做一個二級備份
任何表空間改成只讀狀態後做一個該表空間的備份。
當需要時(如四個小時歸檔檔案系統就要接近滿了)備份歸檔檔案

資料庫全備份指令碼:
run {
allocate channel c1 type disk;
backup full tag 'dbfull' format '/mnt/raid/rman_bk/ora_o_%d_%t%s%p%u' database ;
sql 'alter system archive log current' ;
backup(archivelog all format '/mnt/raid/rman_bk/ora_a_%d_%t%s%p%u');
release channel c1;
}

零級備份指令碼(只讀表空間除外)
run {
allocate channel c1 type disk;
backup incremental level 0 filesperset 5 tag 'dbL0' format '/mnt/raid/rman_bk/ora_o_%d_%t%s%p%u' database skip readonly;
sql 'alter system archive log current' ;
backup(archivelog all format '/mnt/raid/rman_bk/ora_a_%d_%t%s%p%u');
release channel c1;
}

一級備份指令碼
run {
allocate channel c1 type disk;
backup incremental level 1 filesperset 5 tag 'dbL1' format '/mnt/raid/rman_bk/ora_o_%d_%t%s%p%u' database skip readonly;
sql 'alter system archive log current' ;
backup(archivelog all format '/mnt/raid/rman_bk/ora_a_%d_%t%s%p%u');
release channel c1;
}

二級備份指令碼
run {
allocate channel c1 type disk;
backup incremental level 2 filesperset 5 tag 'dbL2' format '/mnt/raid/rman_bk/ora_o_%d_%t%s%p%u' database skip readonly;
sql 'alter system archive log current' ;
backup(archivelog all format '/mnt/raid/rman_bk/ora_a_%d_%t%s%p%u');
release channel c1;
}

表空間備份指令碼(以users表空間為例)
run {
allocate channel c1 type disk;
backup tag 'tsusers' format '/mnt/raid/rman_bk/ora_o_%d_%t%s%p%u' tablespace users;
sql 'alter system archive log current' ;
backup(archivelog all format '/mnt/raid/rman_bk/ora_a_%d_%t%s%p%u');
release channel c1;
}

歸檔檔案備份指令碼
run {
allocate channel c1 type disk;
backup(archivelog all format '/mnt/raid/rman_bk/ora_a_%d_%t%s%p%u');
release channel c1;
}


則每天所需要備份的資料量只有一天的改變數。而做恢復時最多隻要恢復當月的一個零級備份+三個一級備份+6個二級備份+當天的歸檔檔案。

3、RMAN恢復案例:

【1】 丟失全部資料檔案,控制檔案、日誌檔案必須存在

模擬介質損壞:刪除所有dbf檔案
啟動資料庫:startup mount
恢復語句:
run{
allocate channel c1 type disk;
restore database;
recover database;
sql 'alter database open';
release channel c1;
}
注意:Oracle永遠不會備份使用臨時檔案的TEMPORARY表空間,因為臨時表空間包含的只是暫時
性的資料,根本不必還原。不過在還原後資料字典中還是有臨時表空間的相關資訊,你只要
簡單的重建一個臨時表空間,設定其為預設臨時表空間,再把以前的臨時表空間刪除即可。
SQL> create temporary tablespace temp2 tempfile 'd:oracleoradataoradbtemp02.dbf' size 100M;
SQL> alter database default temporary tablespace temp2;
SQL> drop tablespace temp including contents and datafiles;

【2】 丟失非系統資料檔案恢復

模擬介質損壞:刪除users01.dbf檔案
啟動資料庫:startup mount
恢復語句:
run {
allocate channel c1 type disk;
restore tablespace users;
recover tablespace users;
sql 'alter database open';
sql 'alter tablespace users online';
release channel c1;
}

【3】 丟失全部資料檔案、控制檔案、日誌檔案恢復

注意:在備份時配置了configure controlfile autobackup on;

[oracle@Linux1 rman_backup]$ rman target /
RMAN> set DBID=285819149
RMAN> restore controlfile from autobackup;
啟動資料庫:startup mount

恢復語句:
run{
allocate channel c1 type disk;
restore database;
recover database;
sql 'alter database open resetlogs';
release channel c1;
}

4、維護RMAN RMAN的維護主要分為幾個方面
a、 檢視RMAN的資訊
檢查現有備份
RMAN>list backup
列出過期備份
RMAN>report obsolete
刪除過期的備份
RMAN>allocate channel for maintenance type disk;
RMAN>change backupset id delete;
RMAN>release channel;
刪除所有過期的備份
RMAN>delete obsolete;

b、 同步或重置RMAN

如果目標資料庫物理物件發生了變化,如新增了一個資料檔案,需要用如下命令同步:
RMAN>resync catalog;
如果目標資料庫reset了資料庫,需要用如下命令同步
RMAN>reset database;

當手工刪除了資料庫的歸檔檔案後,要執行以下指令碼同步
RMAN>allocate channel for maintenance type disk;
RMAN> change archivelog all crosscheck;
RMAN>release channel;

當手工刪除了資料庫的RMAN備份後,要執行以下指令碼來同步
RMAN>allocate channel for maintenance type disk;
RMAN>crosscheck backup;
RMAN>delete expired backup;
RMAN>release channel;

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

相關文章