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

原文地址:https://www.cnblogs.com/seasonzone/p/4282384.html

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

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 <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、恢復數據庫到早期數據庫副本

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章