rman技術速查手冊

season0891發表於2009-12-18

一、備份方案:

採用多級備份是為了減少了恢復所需要的時間和減少每天備份所需要的時間,而又保證系統有很好的恢復性。
以下是一種建議的方案:
   
 每半年做一個資料庫的全備份(包含只讀表空間)
 每個月做一次零級備份(不包含只讀表空間)
 每個星期做一次一級備份
 每天做一個二級備份
 任何表空間改成只讀狀態後做一個該表空間的備份。
 當需要時(如四個小時歸檔檔案系統就要接近滿了)備份歸檔檔案
1、資料庫全備份指令碼:
run {
allocate channel c1 type disk;
backup full  tag 'dbfull' format '/opt/backup/full_%d_%u' (database include current controlfile);
sql 'alter system archive log current' ;
backup format '/opt/backup/archivelog_%d_%u' (archivelog all);
release channel c1;
}

2、零級備份:
run {
allocate channel c1 type disk;
backup incremental level 0 filesperset 5 tag 'dbL0' format '/opt/backup/ora_0_%d_%u' (database include current controlfile);
sql 'alter system archive log current' ;
backup format '/opt/backup/archivelog_%d_%u' (archivelog all);
release channel c1;
}

3、一級備份:
run {
allocate channel c1 type disk;
backup incremental level 1 filesperset 5 tag 'dbL1' format '/opt/backup/ora_0_%d_%u' (database include current controlfile);
sql 'alter system archive log current' ;
backup format '/opt/backup/archivelog_%d_%u' (archivelog all);
release channel c1;
}

4、二級備份:
run {
allocate channel c1 type disk;
backup incremental level 2 filesperset 5 tag 'dbL2' format '/opt/backup/ora_0_%d_%u' (database include current controlfile);
sql 'alter system archive log current' ;
backup format '/opt/backup/archivelog_%d_%u' (archivelog all);
release channel c1;
}

5、表空間備份指令碼(以users表空間為例):
run {
allocate channel c1 type disk;
backup  tag 'tsusers' format '/opt/backup/ora_0_%d_%u' tablespace users;
sql 'alter system archive log current' ;
backup format '/opt/backup/archivelog_%d_%u' (archivelog all);
release channel c1;
}

6、歸檔檔案備份指令碼:
run {
allocate channel c1 type disk;
backup format '/opt/backup/archivelog_%d_%u' (archivelog all);
release channel c1;
}

二、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;
       sql 'alter tablespace users offline';
       restore tablespace users;
       recover tablespace users;
       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(也可以:restore controlfile from ‘file name’ );
   啟動資料庫:startup mount

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

4、不完全恢復

A
、基於時間點的不完全恢復:

RUN {
   ALLOCATE CHANNEL c1 TYPE DISK;
   SET UNTIL TIME = '2002-12-09:11:44:00';
   RESTORE DATABASE;
   RECOVER DATABASE;
   sql'ALTER DATABASE OPEN RESESTLOGS';
   RELEASE CHANNEL 1;
}
B、基於日誌序列的不完全恢復:
RUN {
   ALLOCATE CHANNEL c1 TYPE DISK;
   SET UNTIL SEQUENCE 120 THREAD 1;
   RESTORE DATABASE;
   RECOVER DATABASE; # recovers through log 119
   sql'ALTER DATABASE OPEN RESESTLOGS';
   RELEASE CHANNEL 1;
}
C、基於SCN的不完全恢復:
RUN {
   ALLOCATE CHANNEL c1 TYPE DISK;
   SET UNTIL SCN=100145;
   RESTORE DATABASE;
   RECOVER DATABASE; 
   sql'ALTER DATABASE OPEN RESESTLOGS';
   RELEASE CHANNEL 1;
}
三、維護RMAN RMAN的維護主要分為幾個方面

1、  檢視RMAN的資訊
         檢查現有備份
           RMAN>list backup
         列出過期備份
           RMAN>report obsolete
         刪除過期的備份 
           RMAN>change backupset id delete; 
         刪除所有過期的備份
           RMAN>delete obsolete; 
           

2、  同步或重置RMAN
  
        如果目標資料庫物理物件發生了變化,如新增了一個資料檔案,需要用如下命令同步:
        RMAN>resync catalog;
        如果目標資料庫reset了資料庫,需要用如下命令同步
        RMAN>reset database;
       
        當手工刪除了資料庫的歸檔檔案後,要執行以下指令碼同步 
        RMAN>crosscheck archivelog all ; 

        RMAN>delete expired archivelog all;
        
        當手工刪除了資料庫的RMAN備份後,要執行以下指令碼來同步 
        RMAN>crosscheck backup;
        RMAN>delete expired backup;

 本文轉自:垃圾廣告.com/blog/138556

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

相關文章