Oracle RMAN 的 show,list,crosscheck,delete命令整理

wdacky發表於2014-09-21
1、SHOW命令:
     顯示rman配置: RMAN> show all;
2、REPORT命令:
2.1、RMAN> report schema 報告目標資料庫的物理結構;
2.2、RMAN>report need backup days=3; 報告最近3天沒有被備份的資料檔案;
2.3、RMAN> report need backup days 3 tablespace users; 在USERS表空間上3天未備份的資料檔案;
2.4、RMAN> report need backup incremental 3; 報告恢復資料檔案需要的增量備份個數超過3次的資料檔案;
2.5、RMAN> report need backup redundancy 2 database; 報告備份檔案低於2份的所有資料檔案;
     RMAN>report need backup redundancy=2;
2.6、RMAN> report need backup recovery window of 6 days; 報告檔案報表的恢復需要超過6天的歸檔日誌的資料檔案;
2.7、RMAN> report unrecoverable; 報告資料庫所有不可恢復的資料檔案;
2.8、RMAN> report obsolete redunndancy 2; 報告備份次數超過2次的陳舊備份;
2.9、RMAN>report obsolete; 報告多餘的備份;
3、LIST命令:列出備份資訊
3.1、列出資料檔案備份集
     RMAN> list backup 列出詳細備份;
     RMAN> list expired backup; 列出過期備份;
     RMAN> list backup of database; 列出所有資料檔案的備份集;
     RMAN> list backup of tablespace user01; 列出特定表空間的所有資料檔案備份集;
3.2、RMAN> list backup of controlfile 列出控制檔案備份集;
3.3、RMAN> list backup of archivelog all 列出歸檔日誌備份集詳細資訊;
     RMAN>list archivelog all;      列出歸檔日誌備份集簡要資訊
3.4、RMAN> list backup of spfile 列出SPFILE備份集;
3.5、RMAN> list copy of datafile 5 列出資料檔案映像副本;
3.6、RMAN> list copy of controlfile 列出控制檔案映像副本;
3.7、RMAN> list copy of archivelog all 列出歸檔日誌映像副本;
3.8、RMAN> list incarnation of database 列出對應物/列出資料庫副本;
3.9、RMAN> list backup summary; 概述可用的備份;
           B表示backup
           F表示FULL
           A表示archive log
           0 1表示incremental backup
           S說明備份狀態(A AVAILABLE   X EXPIRED )
3.10、RMAN>list backup by file 按備份型別列出備份;
      按照資料檔案備份,歸檔日誌備份,控制檔案備份,伺服器引數檔案備份 列出
4、CROSSCHECK命令:校驗備份資訊
4.1、 RMAN> crosscheck backup 核對所有備份集; 
4.2、 RMAN> crosscheck backup of database 核對所有資料檔案的備份集; 
4.3、 RMAN> crosscheck backup of tablespace users 核對特定表空間的備份集; 
4.4、 RMAN> crosscheck backup of datafile 4 核對特定資料檔案的備份集; 
4.5、 RMAN> crosscheck backup of controlfile 核對控制檔案的備份集; 
4.6、 RMAN> crosscheck backup of spfile 核對SPFILE的備份集; 
4.7、 RMAN> crosscheck backup of archivelog sequence 3 核對歸檔日誌的備份集; 
4.8、 RMAN> crosscheck copy 核對所有映像副本; 
4.9、 RMAN> crosscheck copy of database 核對所有資料檔案的映像副本; 
4.10、RMAN> crosscheck copy of tablespace users 核對特定表空間的映像副本; 
4.11、RMAN> crosscheck copy of datafile 6 核對特定資料檔案的映像副本; 
4.12、RMAN> crosscheck copy of archivelog sequence 4 核對歸檔日誌的映像副本; 
4.13、RMAN> crosscheck copy of controlfile 核對控制檔案的映像副本; 
4.14、RMAN> crosscheck backup tag='SAT_BACKUP';
4.15、RMAN> crosscheck backup completed after 'sysdate - 2'
4.16、RMAN> crosscheck backup completed between 'sysdate - 5' and 'sysdate -2 '
4.17、RMAN> crosscheck backup device type sBT;
4.18、RMAN> crosscheck archivelog all;
4.19、RMAN> crosscheck archivelog like '%ARC00012.001'
4.20、RMAN> crosscheck archivelog from sequence 12;
4.21、RMAN> crosscheck archivelog until sequence 522;
5、DELETE:刪除備份
5.1、RMAN> delete obsolete; 刪除陳舊備份;
5.2、RMAN> delete expired backup; 刪除EXPIRED備份 
5.3、RMAN> delete expired copy; 刪除EXPIRED副本;
5.4、RMAN> delete backupset 19; 刪除特定備份集;
5.5、RMAN> delete backuppiece ''d:backupDEMO_19.bak'' 刪除特定備份片;
5.6、RMAN> delete backup 刪除所有備份集;
5.7、RMAN> delete datafilecopy ''d:backupDEMO_19.bak'' 刪除特定映像副本;
5.8、RMAN> delete copy 刪除所有映像副本;
5.9、RMAN> backup archivelog all delete input;在備份後刪除輸入物件;
     RMAN> backup backupset 22 format = ''d:backup%u.bak'' delete input
     在備份後刪除輸入物件;
5.10、RMAN> delete backupset id; 刪除備份集
一致性備份是在SQL>startup mount 下的備份;
非一致性的備份是在open狀態下的備份;
SQL> shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> 
SQL> startup mount
ORACLE 例程已經啟動。
Total System Global Area  285212672 bytes
Fixed Size                  1248552 bytes
Variable Size              75498200 bytes
Database Buffers          201326592 bytes
Redo Buffers                7139328 bytes
資料庫裝載完畢。
SQL>
$ more rman_backup.rcv
allocate channel for maintenance type disk;
crosscheck archivelog all;
delete noprompt expired archivelog all;
crosscheck backup;
delete noprompt expired backup;
release channel;
sql 'alter system checkpoint';
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/nddb/1/rman/%F';
run{         
      allocate channel t1 type disk;
      allocate channel t2 type disk;
      allocate channel t3 type disk;
      backup 
      skip inaccessible
      filesperset 1
      format '/backup/nddb/1/rman/orcl_db_%s_%p_%t.bk'
      (database);   
      sql 'alter system archive log current';
      backup format '/backup/nddb/1/rman/orcl_arc_%s_%p_%t.arc' (archivelog all delete input);
      release channel t1;
      release channel t2;
      release channel t3;
    allocate channel d1 type disk;
    copy current controlfile to '/backup/nddb/1/rman/control.ctl';
    release channel d1;
}
$
$ more rman_target.sh
PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:$HOME/bin:/usr/bin/X11:/sbin:.
 
export PATH
 
if [ -s "$MAIL" ]           # This is at Shell startup.  In normal
then echo "$MAILMSG"        # operation, the Shell checks
fi                          # periodically.
export  ORACLE_SID=icdc
export  ORACLE_BASE=/oracle
export  ORACLE_HOME=$ORACLE_BASE/OraHome_1
export  AIXTHREAD_SCOPE=S
#export  NLS_LANG=American_America.us7ascii
export NLS_LANG=American_america.zhs16gbk 
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export  TEMP=/tmp
export  TMPDIR=/tmp
export LIBPATH=/oracle/OraHome_1/lib:/oracle/OraHome_1/lib32
export  PATH=$ORACLE_HOME/bin:$PATH     
umask 022
set -o vi
dir=/backup/nddb/1
logfile=rman_backup.log
dt=$(date  +"%Y%m%d")
echo "############################${dt}############################"       >>${dir}/${logfile}          
echo "Now remove old rman backup"                                          >>${dir}/${logfile}                   
cd ${dir}
rm -rf rman
mkdir rman
chown -R oracle:dba rman
echo "rman backup begins at $(date  +"%H:%M:%S")"                          >>${dir}/${logfile} 
rman  target /  cmdfile=${dir}/rman_backup.rcv log=${dir}/rman/rman.log
cat rman/rman.log                                                          >>${dir}/${logfile}
echo "rman backup ends at $(date  +"%H:%M:%S")"                            >>${dir}/${logfile}
$
 
 
在Oracle 10g中的配置情況
使用RMAN>show all;
可以顯示出RMAN 配置引數為:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default


CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO ‘C:ORACLE..SNCFTEST.ORA’; #default
1.configure retention policy to redundancy 1: 
是用來決定那些備份不再需要了,它一共有三種可選項,分別是
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
CONFIGURE RETENTION POLICY TO REDUNDANCY 5;
CONFIGURE RETENTION POLICY TO NONE;
第一種recover window是保持所有足夠的備份,可以將資料庫系統恢復到最近七天內的任意時刻。任何超過最近七天的資料庫備份將被標記為obsolete。
第二種redundancy 是為了保持可以恢復的最新的5份資料庫備份,任何超過最新5份的備份都將被標記為redundancy。它的預設值是1份。
第三種不需要保持策略,clear將恢復回預設的保持策略。
一般最安全的方法是採用第二種保持策略。
2.CONFIGURE BACKUP OPTIMIZATION OFF
預設值為關閉,如果開啟,rman將對備份的資料檔案及歸檔等檔案進行一種優化的演算法。
3.Configure default device type to disk:
是指定所有I/O操作的裝置型別是硬碟或者磁帶,預設值是硬碟
磁帶的設定是CONFIGURE DEFAULT DEVICE TYPE TO SBT;
4.CONFIGURE CONTROLFILE AUTOBACKUP OFF
強制資料庫在備份檔案或者執行改變資料庫結構的命令之後將控制檔案自動備份,預設值為關閉。這樣可以避免控制檔案和catalog丟失後,控制檔案仍然可以恢復。
5.CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'
是配置控制檔案的備份路徑和備份格式
6.CONFIGURE DEVICE TYPE DISK PARALLELISM 1;
是配置資料庫裝置型別的並行度。
7.CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1;
是配置資料庫的每次備份的copy數量,oracle的每一次備份都可以有多份完全相同的拷貝。
8.CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1
是設定資料庫的歸檔日誌的存放裝置型別
9.CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'C:ORACLE… SNCFTEST.ORA'
是配置控制檔案的快照檔案的存放路徑和檔名,這個快照檔案是在備份期間產生的,用於控制檔案的讀一致性。
10.CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT 'C:...%d_DB_%u_%s_%p';
是配置備份檔案的備份路徑和備份格式
CONFIGURE CHANNEL DISK CLEAR; 用於清除上面的通道配置
CONFIGURE EXCLUDE FOR TABLESPACE [CLEAR]; 此命令用於將指定的表空間不備份到備份集中, 此命令對只讀表空間是非常有用的。
1.將備份檔案儲存到指定路徑,如 e:\backupb
   configure channel device type disk format 'e:\backupb\%d_db_%u';
後面的%d_db_%u是儲存格式
2.我們也可以單獨指定control file 儲存在另一個路徑:如 e:\backupcontrol
configure controlfile autobackup format for device type disk to 'e:\backupcontrol\%F';


後面的%F是儲存格式
================
RMAN中常用configure命令2007-06-21 15:37
1 顯示當前的配置資訊
===========================
1.01 RMAN> show all;
1.02 查詢RMAN設定中非預設值:
    SQL> select name,value from v$rman_configure;
2. 常用的configure選項
===========================
2.01 儲存策略 (retention policy)
   configure retention policy to recovery window of 3 days;
   configure retention policy to redundancy 3;
   configure retention policy clear;
2.02 備份優化 backup optimization
   configure backup optimization on;
   configure backup optimization off;
   configure backup optimization clear;
2.03 預設裝置 default device type
   configure default device type to disk;
   configure default device type to stb;
   configure default device type clear;
2.04 控制檔案 controlfile
   configure controlfile autobackup on;
   configure controlfile autobackup format for device type disk to '/cfs01/backup/conf/conf_%F';
   configure controlfile autobackup clear;
   configrue controlfile autobackup format for device type disk clear;
   configrue snapshot controlfile name to '/cfs01/backup/snapcf/scontrofile.snp';
   configrue snapshot controlfile name clear;
2.05 並行數(通道數) device type disk|stb pallelism n;
   configure device type disk|stb parallelism 2;
   configure device type disk|stb clear;
       configure channel device type disk format 'e/:rmanback_%U';
       configure channel device type disk maxpiecesize 100m
   configure channel device type disk rate 1200K
        configure channel 1 device type disk format 'e/:rmanback_%U';
        configure channel 2 device type disk format 'e/:rmanback_%U';
        configure channel 1 device type disk maxpiecesize 100m
2.06 生成備份副本 datafile|archivelog backup copies
   configure datafile backup copies for device type disk|stb to 3;
   configure archivelog backup copies for device type disk|stb to 3;
   configure datafile|archivelog backup copies for device type disk|stb clear
   BACKUP DEVICE TYPE DISK DATABASE
    FORMAT '/disk1/backup/%U', '/disk2/backup/%U', '/disk3/backup/%U';
2.07 排除選項 exclude
   configure exclude for tablespace 'users';
   configrue exclude clear;
2.08 備份集大小 maxsetsize
   configure maxsetsize to 1G|1000M|1000000K|unlimited;
   configure maxsetsize clear;
2.09 其它選項 auxiliary
   CONFIGURE AUXNAME FOR DATAFILE 1 TO '/oracle/auxfiles/aux_1.f';
   CONFIGURE AUXNAME FOR DATAFILE 2 TO '/oracle/auxfiles/aux_2.f';
   CONFIGURE AUXNAME FOR DATAFILE 3 TO '/oracle/auxfiles/aux_3.f';
   CONFIGURE AUXNAME FOR DATAFILE 4 TO '/oracle/auxfiles/aux_4.f';
   -
   CONFIGURE AUXNAME FOR DATAFILE 1 CLEAR;
   CONFIGURE AUXNAME FOR DATAFILE 2 CLEAR;
   CONFIGURE AUXNAME FOR DATAFILE 3 CLEAR;
   CONFIGURE AUXNAME FOR DATAFILE 4 CLEAR;
Rman的format格式中的%
%c 備份片的拷貝數 
%d 資料庫名稱 
%D 位於該月中的第幾天 (DD) 
%M 位於該年中的第幾月 (MM) 
%F 一個基於DBID唯一的名稱,這個格式的形式為c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII為該資料庫的DBID,YYYYMMDD為
日期,QQ是一個1-256的序列 
%n 資料庫名稱,向右填補到最大八個字元


%u 一個八個字元的名稱代表備份集與建立時間 
%p 該備份集中的備份片號,從1開始到建立的檔案數
%U 一個唯一的檔名,代表%u_%p_%c 
%s 備份集的號 
%t 備份集時間戳 
%T 年月日格式(YYYYMMDD)
一週內把所有的命令測試後記錄如下(2010.08.24):
 
RMAN元件 
1、目標資料庫
2、伺服器程式
3、通道
4、RMAN資料庫
 ORACLE總是將RMAN後設資料放到目標資料庫的控制檔案中,如果配置了恢復目錄,則RMAN後設資料會被放到恢復目錄中。
5、恢復目錄
 在RMAN後設資料存放天數達到初始化引數control_file_record_keep_time的值之後,其後設資料可能會被覆蓋,從而導致之前的備份不能使用。
6、介質管理層
7、RMAN包
 包dbms_backup_restore用於執行備份、轉儲和恢復操作。backup、copy、restore、recover
 包dbms_revcat用於維護恢復目錄。resync catalog、catalog
 包dbms_rcvman用於查詢恢復目錄和目標資料庫控制檔案。list、report
 
RMAN特點 
1、備份資料庫、表空間、資料檔案、控制檔案、歸檔日誌和SPFILE。目標庫必須處於MOUNT狀態或OPEN狀態。
2、儲存頻繁執行的備份和恢復操作。放到指令碼中執行
3、跳過未用塊。
4、執行增量塊級備份
5、指定備份限制
6、在備份時檢測損壞塊。用DBVERIFY工具進行檢查
7、自動使用並行化特徵提高備份和恢復效能。分配多個CPU、多個通道。
 
RMAN命令 
1、獨立命令
 RMAN>shutdown immediate
 RMAN>startup
 RMAN>backup format 'd:\backup\%d_%s.bak' tablespace users;
2、作業命令
 RMAN>run { backup format 'd:\backup\$d_%s.bak' tablespace users; }
3、執行SQL命令
 RMAN>sql 'alter system switch logfile' ;
4、執行儲存指令碼
  RMAN>run { execute script s1;}
5、執行作業系統命令
 RMAN>run { host "dir d:\backup"; }
6、執行RMAN命令
 c:\rman target sys/oracle@TEST nocatalog @c:\bak_users.cmd log a.log
  bak_users.cmd示例:
  backup format 'd:\backup\%d_%s.bak tablespace users;    
  sql 'alter system archive log current' ;
  
配置RMAN環境(略)
 
建立備份集 
1、完全資料庫備份集
 1)、一致性備份(適用於NOARCHIVELOG和ARCHIVELOG模式)
  c:\rman target sys/oracle@TEST nocatalog
  RMAN>shutdown immediate
  RMAN>startup mout
  RMAN>backup database; 如果備份到別的目錄backup database format ='d:\backup\%d_%s.dbf' ;
  RMAN>sql 'alter system archive log current ' ;
 2)、非一致性備份(在OPEN狀態) 
  RMAN>backup database; 如果備份到別的目錄backup database format ='d:\backup\%d_%s.dbf' ;
  RMAN>sql 'alter system archive log current ' ;
 3)、免除表空間
  RMAN>configure exclude for tablespace user03;
  RMAN>backup database; 如果備份到別的目錄backup database format ='d:\backup\%d_%s.dbf' ;
  RMAN>sql 'alter system archive log current ' ; 
2、表空間備份集
 RMAN>backup tablespace users format='d:\backup\%N_%f_%s.dbf' ;
3、資料檔案備份集
 RMAN>backup datafile 5 format='d:\backup\%N_%f_%s.dbf' ;
4、控制檔案備份集
 RMAN>backup current controlfile format='d:\backup\%d_%s.ctl' ;
5、SPFILE備份集
 RMAN>backup spfile format='c:\%d_%s.par';
6、歸檔日誌備份集(過去一天所生成的歸檔日誌)
 RMAN>backup format='c:\%d_%s.arc' archivelog from time='sysdate-1' until time='sysdate'; 
7、並行化備份集
 RMAN>configure device type disk parallelism 3 ;
 RMAN>backup database format='c:\%d_%s.dbf';
 RMAN>configure device type disk clear;
8、建立多重備份
 RMAN>backup copied 3 tablespace users format='c:\1\%N_%s.dbf','c:\2\%N_%s.dbf','c:\3\%N_%s.dbf' ; 
9、備份備份集
 RMAN>backup backupset 32 format='c:\%d_%s.bak';
10、建立多個備份片
 RMAN>configure channel device type sbt  maxpiecesize 4G;
 RMAN>backup device type sbt format  '%d_%s_%p.dbf' database;
11、建立壓縮備份集
 RMAN>backup as compressed backupset tablespace users format='c:\%d_%s.dbf'; 
12、備份資料檔案和歸檔日誌 
 RMAN>backup format 'c:\%d_%s.bak' tablespace users plus archivelog ; 
13、指定備份集標記
 RMAN>backup format='c:\%d_%s.bak' tablespace users tag='users' ; 
 
建立映像副本 
1、建立資料檔案映像副本
 RMAN>backup as copy format='c:\df_5.dbf' datafile 5; 或者
 RMAN>copy datafile 5 to  'c:\df_5.dbf' ;
2、建立控制檔案映像副本
 RMAN>backup as copy format='c:\demo.ctl' current controlfile; 或者
 RMAN>copy current controlfile to  'c:\demo.ctl';
3、建立歸檔日誌映像副本
 RMAN>backup as copy format='c:\arc10.log' archivelog sequence 10; 或者
 RMAN>copy archivelog 'c:\demo\archive\arc00020_012345.001' to 'c:\arc20.log';
4、並行化建立映像副本
 RMAN>configure device type disk parallelism 3;
 RMAN>backup as copy format ='c:\df_%f.dbf' datafile 5,6,7 ;
 RMAN>configure device type disk clear;
5、指定映像副本標記
 RMAN>backup as copy format='c:\df_%f.dbf' datafile 5 tag=df_5;  或者
 RMAN>copy datafile 5 to 'c:\df_%f.dbf' tag=df_5;   
     
建立增量備份和累積備份 
 增量備份可以減少備份時間,累積備份可以減少恢復時間。
 增量備份示例:週日 LEVEL 0 ,週一、週二、週四、、週五、週六 LEVEL 2 ,週三 LEVEL 1 
 RMAN>backup incremental level 0 format='c:\backup\%d_%s.dbf' tablespace users; 週日
 RMAN>backup incremental level 2 format='c:\backup\%d_%s.dbf' tablespace users; 週一
 RMAN>backup incremental level 2 format='c:\backup\%d_%s.dbf' tablespace users; 週二
 RMAN>backup incremental level 1 format='c:\backup\%d_%s.dbf' tablespace users; 週三
 RMAN>backup incremental level 2 format='c:\backup\%d_%s.dbf' tablespace users; 週四
 RMAN>backup incremental level 2 format='c:\backup\%d_%s.dbf' tablespace users; 週五
 RMAN>backup incremental level 2 format='c:\backup\%d_%s.dbf' tablespace users; 週六
RMAN完全恢復   
1、恢復資料庫
 1)、所有資料檔案被刪除
  c:\rman target sys/oracel@test nocatalog
  RMAN>startup force mount
  RMAN> run {
   restore databse ;


   recover database;
   sql 'alter database open' ;
   }
 2)、資料檔案所在磁碟出現硬體故障
  RMAN> run {
   startup force mount;
   set newname for datafile 1 to 'c:\demo\system01.dbf';
   set newname for datafile 2 to 'c:\demo\dundotbs01.dbf';
   set newname for datafile 3 to 'c:\demo\sysaux01.dbf';
   set newname for datafile 4 to 'c:\demo\users01.dbf';
   set newname for datafile 5 to 'c:\demo\example01.dbf';
   set newname for datafile 6 to 'c:\demo\test0.dbf'; 
   restore database;
   switch datafile all;
   recover database;
   sql 'alter database open ';
   }
2、恢復SYSTEM表空間的資料檔案
 1)、SYSTEM表空間的資料檔案被誤刪除
  RMAN>run {
     startup force mount;
     restore  datafile 1;
     recover datafile 1;
     sql 'alter database open' ;
     }
 2)、SYSTEM表空間資料檔案所在的磁碟出現故障
  RMAN> run {
   startup force mount;
   set newname for datafile 1 to 'c:\demo\system01.dbf';
   restore datafile 1;
   switch datafile 1;
   recover datafile 1;
   sql 'alter database open';
   }
3、在OPEN狀態下恢復關閉後意外丟失資料檔案
 1)、資料檔案被刪除
 RMAN>run {
  startup force mount;
  sql 'alter database datafile 4 offline';
  sql 'alter database open ';
  restore datafile 4;
  recover datafile 4;
  sql 'alter database datafile 4 online';
  }
 2)、資料檔案所在的磁碟出現損壞  
   RMAN>run {
  startup force mount;
  sql 'alter database datafile 4 offline';
  sql 'alter database open ';
  set newname for datafile 4 to 'c:\demo\user01.dbf';
  restore datafile 4;
  switch datafile 4;
  recover datafile 4;
  sql 'alter database datafile 4 online';
  }      
4、在OPEN狀態下恢復開啟時意外丟失的資料檔案
 1)、資料檔案被誤刪除
  RMAN>run {
  sql 'alter database datafile 4 offline';
  restore datafile 4;
  recover datafile 4;
  sql 'alter database datafile 4 online';
  }
 2)、資料檔案所在磁碟出現故障
  RMAN>run {
  sql 'alter database datafile 4 offline';
  set newname for datafile 4 to 'c:\demo\user01.dbf';
  restore datafile 4;
  switch datafile 4 ;
  recover datafile 4;
  sql 'alter database datafile 4 online';
  }  
5、在OPEN狀態下恢復未備份的資料檔案(創造新資料檔案後沒有進行過備份)
 1)、資料檔案被誤  
  RMAN>run {
   startup force mount;
   sql 'alter database datafile 7 offline ';
   sql 'alter database open';
   restore datafile 7;
   recover datafile 7;
   sql 'alter database datafile 7 online';
   }
 2)、資料檔案所在磁碟出現故障
  RMAN>run {
   startup force mount;
   sql 'alter database datafile 7 offline ';
   sql 'alter database open';
   set newname for datafile 7 to 'c:\demo\user04.dbf';
   restore datafile 7;
   switch datafile 7;
   recover datafile 7;
   sql 'alter database datafile 7 online';
   }  
   
6、恢復表空間
 1)、表空間被刪除
  RMAN>run {
   sql 'alter tablespace users offline for recover';
   restore tablespace users;
   recover tablespace users;
   sql 'alter tablespace users online';
   }
 2)、表空間的資料檔案所在磁碟出現故障
   RMAN>run {
   sql 'alter tablespace users offline for recover';
   set newname for datafile 4 to 'c:\demo\user01.dbf';
   restore tablespace users;
   switch tablespace users;
   recover tablespace users;
   sql 'alter tablespace users online';
   }     
7、資料塊介質恢復
 RMAN>blockrecover device type disk datafile 5 block 20,21,100 ;
 
 
RMAN不完全恢復 
1、基本時間恢復
 c:\set nls_date_format=yyyy-dd-mm hh24:mi:ss
 c:\rman target sys/oracle@test nocatalog
 RMAN>run {
  startup force mount;
  set until time='2010-08-22 12:00:08';
  restore database;
  recover database;
  sql 'alter database open resetlogs;
  }
2、基於SCN恢復
 RMAN>run {
  startup force mount;
  set until scn=123456;
  restore database;
  recover database;
  sql 'alter database open resetlogs';
  }
3、基於日誌序列號恢復
 RMAN>run {
  startup force mount;
  set until seqence=10;
  restore database;
  recover database;
  sql 'alter database open resetlogs';
  }
4、基於備份控制檔案恢復
 c:\set nls_date_format=yyyy-dd-mm hh24:mi:ss
 c:\rman target sys/oracle@test nocatalog
 RMAN>startup force nomount;
 RMAN>set dbid=1113606269;
 RMAN>restore controlfile from autobackup maxseq 6;
 RMAN>alter database mount;
 RMAN>run {
  set until time='2010-08-22 12:00:08';
  restore database;
  recover database;
  sql 'alter database open resetlogs;
  }
當執行了上述4種不完全恢復之後,建議刪除早期的所有備份,並重新備份資料庫
RMAN>run {
 delete noprompt backup;
 delete noprompt copy;
 backup database format='c:\backup\%d_%s.bak';
 sql 'alter system archive log current';
 }
 
RMAN維護命令 
REPORT 
1、報告目標資料庫的物理結構
 RMAN>report schema;
2、報告需要備份的資料檔案
 1)、報告需要轉儲的增量備份超出特定個數的資料檔案
  RMAN> report need backup incremental 3;
 2)、報告特定天數未備份的資料檔案
  RMAN>report need backup days 3 tablespace users ; 
 3)、報告低於特定備份次數的資料檔案
  RMAN> report need backup redundancy 2 database ; 
 4)、報告在恢復時間視窗內未備份的資料檔案
  RMAN> report need backup recovery window of 3 days ;
3、報告陳舊備份
 RMAN>report obsolete redundancy 2;  
4、報告不可恢復的資料檔案
 RMAN>report unrecoverable;
LIST 
1、列出資料檔案備份集
 RMAN>list backup of database ;
 RMAN>list backup of tablespace users;
 RMAN>list backup of datafile 4;
2、列出控制檔案備份集
 RMAN>list backup of controlfile ;


3、列出歸檔日誌備份集
 RMAN>list backup of archivelog all; 
4、列出SPFILE備份集
 RMAN>list backup of spfile ; 
5、列出資料檔案映像副本
 RMAN>list copy of database;
 RMAN>list copy of tablespace users;
 RMAN>list copy of datafile 4;
6、列出控制檔案映像副本
 RMAN>list copy of controlfile;
7、列出歸檔日誌映像副本
 RMAN>list copy of archivelog all;
8、列出資料庫副本
 RMAN>list incarnation of database ;   
 注意,每次用RESETLOGS選項開啟資料庫之後都會生成一個新的資料庫副本。
9、列出備份集檔案的資訊
 RMAN>list backupset 100;
CROSSCHECK 
1、核對所有備份集
 RMAN>crosscheck backup;
2、核對所有資料檔案的備份集
 RMAN>crosscheck backup of database ;
3、核對特定表空間的備
 RMAN>crosscheck backup of tablespace system;
4、核對特定資料檔案的備份集
 RMAN>crosscheck backup of datafile 1;  
5、核對控制檔案的備份集
 RMAN>crosscheck backup of controlfile ; 
6、核對SPFILE的備份集
 RMAN> crosscheck backup of  spfile;
7、核對歸檔日誌的備份集
 RMAN> crosscheck backup of  archivelog sequence 40;  
8、核對所有映像副本
  RMAN> crosscheck copy ;
9、核對所有資料檔案的映像副本 
 RMAN> crosscheck copy of database;
10、核對特定表空間的映像副本
 RMAN> crosscheck copy of tablespace users;
11、核對特定資料檔案的映像副本
 RMAN> crosscheck copy of  datafile 1;
12、核對控制檔案的映像副本
 RMAN> crosscheck copy of  controlfile;
13、核對歸檔日誌的映像副本
 RMAN> crosscheck copy of  archivelog sequence 44;
         
            
   
DELETE 
1、刪除陳舊備份
 delete obsolete;  #提示
 delete noprompt obsolete; #不提示
2、刪除EXPIRED備份集
 delete noprompt expired backup;
3、刪除EXPIRED副本
 delete noprompt expired copy ;  
4、刪除特定備份集
 delete noprompt backupset 19;
5、刪除特定備份片
 delete noprompt backuppiece 'c:\test\demo1.bak';
6、刪除所有備份集
 delete noprompt backup ;  或者
 delete noprompt backupset;   
7、刪除特定映像副本
 delete noprompt datafilecopy 'c:\test\demo.bak';  刪除資料檔案
 delete noprompt controlfilecopy 'c:\test\controlfile_bak.ctl';  刪除控制檔案
 delete noprompt archivelog  'c:\test\arc.bak'; 刪除歸檔日誌
8、刪除所有映像副本
 delete noprompt copy;
9、在備份後刪除輸入物件
 backup archivelog all  delete input ;
 backup backupset 22 format='c:\test\%u.bak' delete input ;
 
  
CHANGE 
1、改變備份集狀態
 change backupset 22 unavailable;
2、改變映像副本狀態
 change datafilecopy 'c:\demo.bak' unavailable ; 
 change controlfilecopy 'c:\demo.bak' unavailable ;
 change archivelog 'c:\demo.bak' unavailable ;
3、建立長期備份
 change backupset 100 keep forver logs; 使備份集100永久保留
 change  backupset 100 keep until time 'sysdate+60' logs; 使備份集100保留60天
 change  backupset 156 nokeep ; 免除備份集100的保留期限
  
CATALOG
1、註冊副本
 catalog datafilecopy 'c:\user01.bak';
2、註冊備份片
 catalog backuppiece 'c:\demo_10.dbf' ;
3、註冊特定目錄的所有備份檔案   
 catalog start with 'c:\bak';
4、登出備份記錄
 change datafilecopy 'c:\user01.bak' uncatalog;
 change controlfilecopy 'c:\demo.ctl' uncatalog;
 change backuppiece 'c:\demo_10.bak' uncatalog;
恢復目錄管理 
建立恢復目錄
1、建立恢復目錄表空間
SQL> create tablespace rman_ts
  2  datafile 'D:\oracle\product\10.1.0\db_1\train\rman.dbf'
  3  size 15m ;
表空間已建立。
2、建立恢復目錄所有者
SQL> create user rman identified by rman


  2  default tablespace rman_ts;
使用者已建立。
3、授予恢復目錄所有者角色
SQL> grant connect,resource,recovery_catalog_owner to rman;
授權成功。
4、建立恢復目錄
 c:\rman catalog rman/rman@train 
 RMAN>create catalog;
5、註冊目標資料庫
 RMAN>connect target sys/oracle@train 
 RMAN>register database;
 RMAN>report schema;
 
使用儲存指令碼
1、建立儲存指令碼
 C:\>rman catalog rman/rman@train target sys/dddddd@train 
 RMAN>create script bak_database {
  backup format='c:\temp\%d_%s.bak'
  database include current controlfile
  plus archivelog;
  sql 'alter system archive log current' ;
  }
2、執行指令碼
 (1)、在RMAN提示符下執行儲存指令碼
  RMAN>run { execute script bak_database; }
 (2)、在命令列執行儲存指令碼
  c:\rman catalog rman/rman@train target sys/dddddd@train script bak_database
3、顯示儲存指令碼內容
 RMAN>print script bak_database;
4、替換儲存指令碼
 RMAN>replace script bak_database {
  backup database format='c:\temp\%d_%s.bak';
  }
5、刪除儲存指令碼 
 RMAN>delete script bak_database;
6、列出所有儲存指令碼
 RMAN>list script names;
 
 
維護恢復目錄
1、重新同步恢復目錄
 RMAN> resync catalog;
2、登出目標資料庫
 RMAN>unregister database;
 當登出了目標資料庫之後,會丟失早於controlfile_record_keep_time設定時間的RMAN資料庫記錄。
3、升級恢復目錄
 C:\>rman catalog rman/rman@train target sys/dddddd@train 
 RMAN> upgrade catalog;
 RMAN> upgrade catalog;
4、刪除恢復目錄
 C:\>rman catalog rman/rman@train target sys/dddddd@train 
 RMAN> drop catalog ;             
 RMAN> drop catalog ;
5、恢復資料庫到早期資料庫副本

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

相關文章