ITPub博客

首页 > Linux操作系统 > Linux操作系统 > RMAN常用命令

RMAN常用命令

原创 Linux操作系统 作者:tolywang 时间:2011-08-10 17:18:14 0 删除 编辑


RMAN 常用命令

 

一,准备工作(如果需使用恢复目录) :

1). 建立catalog数据库(假设名称为rman)  
2). 建立用于恢复目录的表空间
    SQL> create tablespace rcat_tbs datafile 
      'D:\oracle\product\10.2.0\oradata\rman\rman_tbs01.dbf' size 200M;
3). 建立用户 
    SQL> create user rman_cat identified by oracle default tablespace
       rcat_tbs temporary tablespace temp ;
    SQL> alter user rman_cat quota unlimited on rcat_tbs;
    SQL> grant recovery_catalog_owner to rman_cat ;
    SQL> grant connect , resource to rman_cat ;
4). 创建恢复目录 (创建恢复目录都做了什么 ??? ) 
    C:\>rman  catalog  rman_cat/oracle@rman01
     恢复管理器: Release 10.2.0.1.0 - Production on 星期一 5月 23 09:15:42 2011
     Copyright (c) 1982, 2005, Oracle.  All rights reserved.
     连接到恢复目录数据库
   RMAN> create catalog tablespace rcat_tbs ; 
     恢复目录已创建
5). 通过RMAN连接到目标库和恢复目录后,将目标库注册到恢复目录中。
   C:\>rman  target sys/oracle@test01  catalog  rman_cat/oracle@rman01
    恢复管理器: Release 10.2.0.1.0 - Production on 星期一 5月 23 09:19:38 2011
    Copyright (c) 1982, 2005, Oracle.  All rights reserved.
    连接到目标数据库: TEST01 (DBID=3556425887)
    连接到恢复目录数据库
  RMAN> register database;
   注册在恢复目录中的数据库
   正在启动全部恢复目录的 resync
   完成全部 resync

6). RMAN备份(测试) 

RMAN> backup device type disk format 'D:\rmanbak\%U' database plus archivelog;

 

 

二,常用命令 :


1.  备份log以append方式保存在log文件中.

C:\>set ORACLE_SID=test01
C:\>rman target /   log=c:\rman.log  append
RMAN> backup device type disk format 'D:\rmanbak\%U' database ; 

其中log=c:\rman.log,表示RMAN所有的输出都不会显示在屏幕上,而是
全都输出到rman.log 中, append表示追加.

 

2.  查看RMAN配置

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 BACKUP TYPE TO BACKUPSET; # 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 ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:\ORACLE\PRODUCT\10.2.0\DB_2\DATABASE\SNCFTEST01.ORA'; # default

RMAN> show device type;

RMAN 配置参数为:
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default

RMAN> 

 

 


3.  使用Configure修改选项值 

configure命令选项值修改很简单,可以先通过show all 显示,然后修改。
RMAN > show all ;
....
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
....

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON ;

新的 RMAN 配置参数:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
已成功存储新的 RMAN 配置参数
正在启动全部恢复目录的 resync
完成全部 resync

登入目标库,修改的部分可以通过 select * from v$rman_configuration; 查询到。

再次show all 查看CONTROLFILE AUTOBACKUP后面的 # default 会消失。说明以前
更改过,修改回OFF之后同样后面的 # default 也是消失的 。

 

 


4. PARALLELISM, BACKUP SET,BACKUP PIECES, FILESPERSET, MAXSETSIZE,MAXPIECESIZE

A. 如果設置了PARALLELISM=3,在RUN中没有单独通过ALLOCATE CHANNEL指定通道,
它会默认使用PARALLELISM 设置的通道数目。

RMAN > configure device type disk parallelism 3 ;

B. 如果在run命令块中指定了allocate channel,那么设置的parallelism配置的
并行通道不起作用,以 allocate channel 为准。
run {
allocate channel d1 type disk;
allocate channel d2 type disk;
}


C. 备份片(BACKUP PIECE)是物理概念,即操作系统中的文件。每个backup set默认包
含一个backup piece,但是piece的数量还受到maxpiecesize影响,但超过maxpiecesize
时就会产生多个 piece。设置最大备份片大小:
RMAN > configure channel device type disk maxpiecesize 10240 M ;


D. 备份集(BACKUP SET)是逻辑概念,一次备份的backup set的数量可以由FILESPERSET
参数设定,所以如果备份的文件数超过此参数就会产生多个backup set,


E.  FILESPERSET : 表示每个备份集(backup set)包含多少个数据文件(dbf文件)
或归档日志文件 (注意不是备份片文件), 如果备份的文件数超过此参数就会产生
多个备份集 . 


G.  MAXSETSIZE 

一个数据库的备份是由多个backup set组成的,一个backup set 可能是由多个backup
piece组成的。 

maxsetsize的设定更多侧重的是优化,它定义了一个backupset的大小,从而rman就会自动
的控制这个backup set包含多少个datafile或archive log等文件。其作用是与filesperset
差不多的。

maxpiecesize侧定的是限制, 因为实际生成的文件是piece,如果你的文件系统不支持
大文件,最大的文件则为2GB,当然要做maxpiecesize的设定,否则会报错。


H . 数据块大小不同的文件不能在同一备份集中。

select * from v$datafile;
select  * from v$controlfile;
select * from v$archived_log;

数据文件和控制文件的block_size = db_block_size = 16K, 归档日志的block_size = 512,
数据文件,控制文件能保存在同样的备份集上,但是不能与归档日志保存在同样的备份集上。
如果启动了控制文件自动备份,那么控制文件所在的备份文件会单独生成一个备份集,不会
与数据文件备份集合并在一起


I. 文件数,通道数,备份集的关系 

例子 :
(1). filesperset设置为6,数据文件数目为30,通道数据为4,通过30/4可以得
出每个备份集可含有8个文件,取6和8中较小的值6,那么30/6=5个备份集,那
么4个通道肯定都有事情可做了。

(2). 如果不指定filesperset,假设数据文件数目为30,通道数据为4,通过30/4
可以得出每个备份集可含有8个文件,比较8和默认值64,我们取其中较小的8,
那么也可以保证4个通道都有事情可做 。 备注: 每个备份集中包含的最大的
文件数目(dbf数量)为64 。

 

 

5. 使用RMAN进行备份

备份整个库:
RMAN > backup database; 
RMAN > backup as backupset database format '/u01/cfbak/full_bak_%U';
(1). 表示对整个库进行备份,RMAN自动创建通道。
(2). 如果数据库为非归档模式,需要数据库为mount模式进行RMAN备份。
(3). 若是归档模式,数据库可以open,也可以mount,但不能关闭(可在关闭状态恢复数据库)。
(4). 不指定备份路径的情况下, 备份会放在ORACLE_HOME下的类似
     \FLASH_RECOVERY_AREA\TEST01\BACKUPSET\2011_08_11 目录下,控制文件及spfile自动
     备份的部分会在 FLASH_RECOVERY_AREA\TEST01\AUTOBACKUP\2011_08_11 下。


只备份一个表空间:
RMAN > BACKUP TABLESPACE SYSTEM; 
RMAN > backup as backupset tablespace users format '/data/backup/tbs_users_%U' ;


只备份数据文件
RMAN > backup as backupset datafile 4 format '/data/backup/df_#4_%U' ; 
在备份数据文件时,为了加快速度,可以手动指定为某些文件设置多个通道,也可以通过
parallelism参数自动创建多个通道,需要注意的是,通过parallelism自动创建的多个通
道可能用不上。

例子:

RMAN > run{
allocate channel c1 device type disk format 'D:\%U';
allocate channel c2 device type disk format 'D:\%U';
backup as backupset datafile 1,2,3,4 ;
sql  'alter system archive log current' ;
}


RMAN > run{
allocate channel c1 device type disk format '/data/backup/%U';
allocate channel c2 device type disk format '/data/backup/%U';
backup as backupset
(datafile 1,4  channel c1)
(datafile 2,3  channel c2);
sql  'alter system archive log current' ;
}

也可以不指定通道的格式,将备份集放在同一个目录下(注意其中的分号): 
RMAN > run{
allocate channel c1 device type disk ;
allocate channel c2 device type disk ;
backup as backupset format '/data/backup/%U'
(datafile 1,4  channel c1)
(datafile 2,3  channel c2);
sql  'alter system archive log current' ;
}


不具体指定哪些通道负责哪些文件,RMAN自动决定:
RMAN > run{
allocate channel c1 device type disk ;
allocate channel c2 device type disk ;
backup as backupset format '/data/backup/%U'
(database) ;
sql  'alter system archive log current' ;

这样RMAN会按照备份集大小尺寸相差不多的原则,自动组合数据文件,最终生成
的两个备份集的大小尺寸差不多。

我们也可以配置parallelism来配置多个通道:
RMAN > configure device type disk parallelism 3 backup type to backupset ;
以上设置,在每次备份时都会默认自动生成3个通道,执行决定每个通道负责备份
哪些数据文件,最后得到的3个备份集的尺寸大小会差不多。
RMAN > backup as backupset database format '/data/backup/full_bak_%U' ;

 


备份集的压缩:

Oracle10g开始,RMAN备份提供对备份集文件的压缩,当然只对备份集有效,对镜像
副本无效,命令如下, 一般是大概5:1的压缩 :
RMAN > backup as compressed backupset database ;

压缩比比较理想。不过压缩备份集虽能够节省一些存储空间,但会降低备份和恢复时
的速度,如何取舍就取决于实际需求了。


RMAN配置中如何去掉SBT_TAPE
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE 'SBT_TAPE'  clear;

 

 

 

6.  RMAN备份类型二 - 镜象副本(Image Copy)

镜像副本(Image copy):  与手工OS Copy备份数据文件类似,是一个数据文件生成
一个镜像副本文件(数据库数据文件、归档重做日志或者控制文件的精确副本),不
同的是这个过程由RMAN完成,RMAN复制的时候也是一个数据块一个数据块(Oacle block)
的复制,同时默认检测数据块是否出现物理损坏(默认不会进行逻辑损坏检查,需要手
工启动),且不需要将表空间置为begin backup状态,和备份集类型不同在于生成的
镜像副本中包含使用过的数据块,也包含从来没有用过的数据块 。

一个image copy是对数据库文件的二进制拷贝,与os的拷贝命令相同。不同的是rman
的image copy会将备份信息记录在rman的备份信息库,这些image copy可以被rman用
来恢复文件,而os的copy命令产生的备份文件则需要手动的加入到rman的备份信息库
才能被rman使用。

Image copy只能创建在disk上,使用as copy选项的backup命令将会创建image copy的备份。

Copy镜像拷贝至少要在mount 状态下运行(需要读取控制文件中的文件号 等)。
Copy镜像拷贝可作为增量备份的 Level0
Oracle10g开始,允许使用单条命令"backupascopy"进行数据库拷贝。

 


备份集/热备份和镜像副本的区别 ---- 

A. 镜象副本拷贝文件过程通过RMAN进行,备份信息会记录在RMAN信息库中。
B. 与热备份相似,备份所有的数据块,且备份文件以datafile存在。
C. 镜象备份只能备份在disk上,不能在磁带上。
D. 与备份集相似,备份过程中可以进行物理损坏的检测。
E. 可以使用操作系统工具或 RMAN 创建镜像副本,也能够使用操作系统工具
   或RMAN 直接利用镜像副本恢复数据库,而无须任何额外处理。
F. 鏡像副本可以進行增量備份動作。
G. 生成镜像副本的好处在于恢复时速度相对备份集来说要更快 ,恢复时可以
   不用拷贝,指定新位置即可。
H. OS的copy命令产生的备份文件需要手动的加入到rman的备份信息库才能被rman使用。
I. 备份集可以包含多个数据文件,备份中可以压缩及增量备份,但必须使用RMAN恢复。
J. 备份集的格式为RMAN自有格式 。
K. RMAN压缩只对备份集有效,对镜象副本无效。

 

镜象副本的原理 ---

镜象副本和备份集的原理一样,进行Oracle block块的拷贝,只是整个文件的块都需要
扫描到,所有的块都会被复制到副本中,处理正在被更新的block与RMAN备份集一样(协
调DBWn将脏块处理到disk之后再进行)。 

 

 


操作镜象副本备份 ---

使用RMAN生成镜像副本文件,可以使用以下命令: 
RMAN > backup as copy
       datafile  '/u01/app/oradata/ora10g/users01.dbf'
       format '/u01/backup/users01.dbf' ;

或者使用copy命令:

RMAN > run {
allocate channel c1 device type disk ;
copy datafile  'D:\oracle\product\10.2.0\oradata\test01\USERS01.dbf'
to  'D:\USERS01.bak' ;
}

使用以上命令的时候,可以使用如下命令批量处理数据文件:
SELECT 'datafile '||''''||name||''''||'
to '||''''||'/backup'||name||''''||',' FROM v$datafile;

 

 


7.  Backup命令的选项 

A. 若需要提高备份速度,可以适时取消RMAN中的物理检测(一般不建议) :
RMAN > backup nochecksum database ; 

B. 默认情况下,RMAN不会检查数据块是否发生逻辑损坏,可以启动逻辑坏块检查:
RMAN > backup check logical database; 

C. RMAN备份时,只要发现了新的坏块,就会立刻停止备份,如果发现的是上次备份时
已经发现的坏块,则RMAN会继续备份。 我们可以设置maxcorrupt参数来通知RMAN,
发现坏块个数超过指定的数量时才停止备份:
RMAN > run{
set maxcorrupt for datafile 5,7,8,9  to 10 ;
backup database ;
}
表示当在5,7,8,9号文件中的坏块超过10个时就停止备份,其他文件碰到新坏块就
停止备份。

E. 我们也可以使用validate 来检验坏块, 它不会生成物理的备份文件 。
RMAN > backup validate database ; 

F. 跳过离线或不可访问或只读的文件,也可以同时都包含。
RMAN > backup database skip offline ;
RMAN > backup database skip inaccessible;
RMAN > backup database skip readonly;
RMAN > backup database skip inaccessible skip readonly;   

G. 只备份上次备份以来新加入的文件
RMAN > backup database not backed up; 

H. 对那些在指定的时间范围内,没有被备份过的数据文件进行备份,如下:
RMAN > backup database not backed up since time='sysdate-2' ; 

 

 

8.  备份归档日志文件和控制文件

在使用RMAN备份归档日志文件时,RMAN首先会自动进行一次日志切换,然后对归档
日志文件进行备份。可以采用指定时间,日志序列号备份归档日志文件。
RMAN > backup archivelog from time 'sysdate-3'; 
RMAN > backup archivelog from sequence 230;
RMAN > backup archivelog all ;

可以将备份完毕的归档日志文件在归档路径下删除:
RMAN > backup archive all delete input ;
如果归档日志在A,B路径下都有,需要都删除的话,需要:
RMAN > backup archive all delete all input ; 

备份数据文件的时候同时备份归档日志文件
RMAN > backup database plus archivelog ;
   其中backup database会默认备份datafile, controlfile, spfile;
RMAN > backup tablespace users plus archivelog ;

控制文件中默认会保留7天的归档日志文件列表,RMAN备份时会根据目标
数据库中的控制文件记录的这些归档日志文件列表去找所有归档日志文件,
如果我们手工删除了归档日志文件,不会通知到控制文件,RMAN备份归档
日志文件会失败。这时我们可以使用一下两种方式让RMAN继续:
RMAN > crosscheck archivelog all ;
// validate all archivelogs in your disk. If some are missing,
// it will treat it as expired.
除了设置为expired外,若需要在控制文件彻底删除标记为expired的归档记录
RMAN > delete expired archivelog all ;
或者
RMAN > backup database plus archivelog skip inaccessable ;
上面命令表示只是备份那些可以访问到的,跳过不能访问到的。
当然也可以加入delete input删除已经备份的归档日志。
RMAN > backup database plus archivelog skip inaccessable delete input;

备注: 虽然我们可以同时备份datafile和archivelog file,但是他们不会放在
同一个备份集中,因为归档日志以操作系统块为最小单位,数据文件以oracle
block为最小单位 。

 


控制文件的备份 --- 

RMAN > show all ;
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default 
可以看到默认情况下控制文件自动备份是off状态,我们可以通过on来开启。
当然我们也可以手工备份控制文件:
RMAN > backup current controlfile ; 
也可以备份为standby模式的控制文件,如:
RMAN > BACKUP DEVICE TYPE DISK FORMAT '/data/backup/%U' CURRENT CONTROLFILE FOR STANDBY;
也可以备份数据库时,同时备份归档文件和控制文件,如:
RMAN > backup database include current controlfile plus archivelog skip inaccessable ;

 

所有文件的备份集会放在 /data/backup/%U 下
backup format '/data/backup/%U' database plus archivelog ; 

归档日志文件备份集放在flash_recover_area下,数据文件及其他文件的备份集会放在 /data/backup/%U下
backup database format 'e:\data\backup\%U' plus archivelog ;

归档文件的备份集会放在 /data/backup/%U 下,数据文件及其他文件会放在flash_recover_area下
backup database plus archivelog format '/data/backup/%U';

 

 

9.  增量備份

增量备份 -- 只对上一次备份以来发生变化的数据块进行备份,通过增量备份可以使我们使用
更少的磁带或磁盘空间,减少完成备份的时间。我们既可以在归档模式下进行增量备份,也可
以在非归档模式下进行(非归档模式下需要启动到mount状态)。

如果RMAN在进行增量备份时,没有发现可以参照的基本备份(0级备份),那么RMAN会自动进行0级
的基本备份操作,并忽略我们指定的增量备份级别。增量备份的级别,分别为0,1,2,3,4,5。
一般我们只用到0,1,2这三个级别的备份。

增量备份两种类型 --  差异增量备份和累积增量备份

差异增量备份 -- 每次备份时,只对那些小于等于当前级别的备份以来变化过的数据块进行
备份 (备份上级及同级备份以来所有变化的数据块,差异增量是默认增量备份方式)。 差异
备份是增量备份的缺省类型。 优点:备份快, 缺点:恢复慢 。

例子:
1. 周日0级备份
RMAN > backup incremental level=0 database ;
2. 周一,二,四,五,六执行2级备份
RMAN > backup incremental level=2 database ;
3. 周三进行1级备份 
RMAN > backup incremental level=1 database ;


累积增量备份 -- 每次备份时,只对那些小于(注意:没有等于)当前级别的备份以来变化
过的数据块进行备份 (备份上级备份以来所有变化的块)。优点:恢复快  缺点:备份慢

例子:
1. 周日0级备份
RMAN > backup incremental level=0 database ;
2. 周一,二,四,五,六执行2级备份
RMAN > backup incremental level=2  cumulative  database ;
3. 周三进行1级备份 
RMAN > backup incremental level=1 cumulative  database ;

 

 

 

10. 块改变跟踪 (Block change tracking)  

参考相关文档 : http://space.itpub.net/35489/viewspace-615786  

从Oracle10g开始,为加快增量备份的速度,Oracle引入一个文件,专门用来记录自从
上次备份以来所变化过的数据块的地址,该文件叫做变化跟踪文件(change tracking  file)。 只要有进程修改了某个数据块,则会通过CTWR进程将数据块的地址写入变化跟踪文件,只要创建了变化跟踪文件,RMAN就会自动使用该文件进行增量备份。变化跟踪文件完全由Oracle来管理。之所以加快了备份速度,是因为RMAN可以不再扫描整个数据文件以查找变更数据。一般开启这个特性对数据库性能不会有太大影响。

默认情况下,如果我们指定了初始化参数 db_create_file_dest,那么我们在创建变化跟踪文件时,可以不指定该文件的路径及名称。 
RMAN > alter database enable block change tracking ;
发出该命令后,会在db_create_file_dest指定的目录下创建变化跟踪文件,我们也可以通过disable命令禁用并删除变化跟踪文件。
RMAN > alter database disable block change tracking ; 
可以通过查询v$block_change_tracking来确认是否启用了变化跟踪文件。跟踪文件最小为10M,最小扩展单位为10M.


从Oracle10g开始,RMAN引入了一个新的特性,能够将增量备份应用到某个镜像副本上去,
举例如下:
周天的进行镜像副本,周一到周六的每天做增量备份,周日的镜像副本加上周一的增量备份(应用)可以体现周一的镜像副本,周二产生的增量备份再应用到体现周一的这个镜像副本上,又能代表周二的最新状态的镜像副本。使用如下的命令实现镜像副本应用增量备份:

RMAN > run{
backup incremental level 1 for recover of copy with tag 'incre_upd_db' database;
recover copy of database with tag 'incre_upd_db' ;
}

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-704615/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle , MySQL, SAP IQ, SAP HANA, PostgreSQL, Tableau 技术讨论,希望在这里一起分享知识,讨论技术,畅谈人生 。

注册时间:2007-12-10

  • 博文量
    5595
  • 访问量
    13473477