转:RMAN常用命令

该文对RMAN的命令写得很精华,故转.

转自:http://space.itpub.net/24558279/viewspace-734740

常用的命令和操作:
1、backup和COPY
2、list
3、delete 和crosscheck
4、change
5、rman>report schema; --查看数据库有哪些表空间和数据文件
6、备份脚本
7、执行SQL语句(rman中的sql环境不能执行SELECT语句)
8、RMAN备份相关的动态性能表

1、backup和copy
backup 逻辑物理备,基于块级别的备份,已经使用过的块--热点块
备份格式
backup spfile;
backup current controlfile;
backup datafile 4;
backup tablespace users,sysaux;
backup archivelog sequence between ## and ##;
backup archivelog sequence between ## and ## delete input;
backup archivelog all;
-------------------------------------------------------
BACKUP DATABASE PLUS ARCHIVELOG;
  则在备份数据库的同时自动对所有归档文件进行备份。这种方式与上种有什么区别呢,区别太明显了,BACKUP.....PLUS ARCHIVELOG命令在备份过程中会依次执行下列步骤:
  1>.运行ALTER SYSTEM ARCHIVE LOG CURRENT语句对当前redolog进行归档。
  2>.执行BACKUP ARCHIVELOG ALL命令备份所有已归档日志。
  3>.执行BACKUP命令对指定项进行备份。
  4>.再次运行ALTER SYSTEM ARCHIVE LOG CURRENT对当前redolog归档。
  5>.对新生成的尚未备份的归档文件进行备份。
------------------------------------------------------
backup archivelog all delete input;   备份之后删除归档目录下的所有归档日志。
backup full database plus archivelog  全库加归档日志备份
backup database skip readonly   还可以跳过不备份readonly的文件,同样可以跳过OFFLINE 等等
backup database;  备份参数文件,控制文件,所有数据文件,不备份联机日志,归档日志可以备份。
全库备份时候,要注意数据文件必须是online 和read write的,不然会提示不能备份
backup as compressed backupset full database; 备份时压缩备份集
backup database format '/backup/%d_%I_%s_%p_%T_%t.bkp' filesperset=20;
(备份system表空间或者备份database时,备份成功后回将控制文件也自动备份出来)
sql>show parameter db_rec 定义闪回区的目录
NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
db_recovery_file_dest                string                 /oracle//flash_recovery_area
db_recovery_file_dest_size           big integer            2G
db_recycle_cache_size                big integer            0

压缩备份集:
backup as compressed backupset tablespace users;
backup as compressed backupset database plus archivelog;
增量备份:(0 ~ 4)
backup incremental level 0 tablespace users;
backup incremental level 1 tablespace users;
backup incremental level 2 tablespace users;
backup incremental level 2 cumulative tablespace users;
-----------------------------------------------------------------------
补充点内容:
块跟踪(10g):记录自从上一次备份以来数据块的变化,相关后台进程CTWR(Change Tracking Writer)
改善增量备份性能,RMAN可以不再扫描整个文件以查找变更数据
查询是否启用块跟踪
col FILENAME for a40
select filename,status,bytes from v$block_change_tracking;
启用块跟踪
alter database enable block change tracking using '/home/oracle/block_track/orcl_block_track.log';
禁用块跟踪
alter database disable block change tracking;
修改块修改跟踪文件路径:
mount
目标文件要存在
alter database rename file '' to '';
并行备份:(使用rman语句块)
backup datafile 4,5;
-----------------------------------------------------------------------
copy 物理备
copy current controlfile to '';    物理备份   一般不用
copy datafile 4 to '';

2、list
list backup
list backup of database summary;
查看镜像拷贝:
list copy;
list copy of datafile 4;
list copy of controlfile;
查看创建的脚本:list script. names;


3、delete 和crosscheck
  1、删除陈旧备份
  当使用RMAN执行备份操作时,RMAN会根据备份冗余策略确定陈旧备份。    
  RMAN> delete obsolete;
  
  2、删除EXPIRED备份
  执行crosscheck命令核对备份集,那么会将该备份集标记为EXPIRED状态。为了删除相应的备份记录,可以执行delete expired backup命令。    
  RMAN> delete expired backup;
  
  3、删除EXPIRED副本
  RMAN> delete expired copy;
  
  4、删除特定备份集
  RMAN> delete backupset 19;
  
  5、删除特定备份片
  RMAN> delete backuppiece 'd:backupDEMO_19.bak';
  
  6、删除所有备份集
  RMAN> delete backup;
  
  7、删除特定映像副本
  RMAN> delete datafilecopy 'd:backupDEMO_19.bak';
  
  8、删除所有映像副本
  RMAN> delete copy;
  
  9、在备份后删除输入对象
  RMAN> delete archivelog all delete input;
  RMAN> delete backupset 22 format = ''d:backup%u.bak'' delete input;
检测备份存在、正常否:  正常的是available  不存在的显示:expired 过期
crosscheck copy;
crosscheck archivelog all;
crosscheck backup;
删除不可用的备份集
delete expired backup,配合crosscheck backup;使用
delete noprompt expired backup   不需要交互模式
删除拷贝:
delete copy;
delete datafilecopy '/home/oracle/rmanbk/users01.dbf';
删除备份集:
delete backupset 1,2,3;
delete backup;
删除陈旧的备份:(由备份保留策略参数决定) 比如定义为10天,
delete obsolete;和report obsolete 配合使用
  如果被判断为废弃的备份是一个单独数据文件的镜像复制,那么在执行DELETE命令时将直接删除这个镜像复制文件。
  如果被判断为废弃的备份是一个备份集中的一部分,则必须等到整个备份集中所有其它文件都被废弃之后,才能删除这个备份集。
delete obsolete redundance=3;
参数定义:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 1 DAYS;  建议用保留的时间
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; 这个冗余度参数,不建议用

校验备份和还原的可行行:
backup validate database;
validate backupset 10;
restore tablespace users validate;

4、change
change backupset 140 unavilable;

6、备份脚本:
run{
allocate channel c1 type disk format '/home/oracle/rmanbk/%d_%I_%s_%p_%T.bkp';
allocate channel c2 type disk format '/home/oracle/rmanbk/%d_%I_%s_%p_%T.bkp';
backup
(datafile 4 channel c1)
(datafile 5 channel c2);
delete noprompt obsolete;
}
控制备份片大小:
run{
allocate channel c1 type disk maxpiecesize=50m;
backup tablespace users format '/home/oracle/rmanbk/%s_%p.bkp';
}
控制备份集数量:控制
run{
allocate channel c1 type disk maxpiecesize=100m;
backup database format '/backup/%d_%I_%s_%p_%T_%t.bkp' filesperset=20;
backup format '/backup/%d_%I_%e_%s_%p_%T_%t.bkp' archivelog all delete input;
delete noprompt obsolete;
}
backup database not backed up format '';

backup database format '/backup/%d_%I_%s_%p_%T_%t.bkp' filesperset=20;

创建脚本:  查看本地脚本:list script. names;必需要有catalog库
create script. r1{
allocate channel c1 type disk format '/home/oracle/rmanbk/%d_%I_%s_%p_%T.bkp';
allocate channel c2 type disk format '/home/oracle/rmanbk/%d_%I_%s_%p_%T.bkp';
backup
(datafile 4 channel c1)
(datafile 5 channel c2);
delete noprompt obsolete;
}
执行脚本,必需放在run{} 里面:
rman>run{
rman>excute script. r1;
rman>}
删除脚本,rman>delete script. r1;
打印命令:rman>print script. r1;
编辑脚本:先保存rman>print script. r1 to '/oracle/..txt';
编辑之后再替换:rman>replace script. r1 from '/oracle/...txt'

全局脚本: 可以适合任何target数据库
create global script. r1{
。。。。。。。
}
执行:
rman>run{
rman>excute global script. r1;
rman>}
RMAN命令执行方式:
  在进入演练之前,大家还有必要了解运行rman命令的方式,就目前已知的情况,共有4种运行方式。
  1、单个执行(没啥说的,之前的示例都是这种方式)
  RMAN>backup database;
  
  2、批处理(呵呵,跳票的补上)
  RMAN>RUN{
  .......................
  .......................
  }
  批处理方式实质是将原来单个执行的命令组合到一起,并放在run{}之间,这种方式最大的好处是所有在run中的命令被视为一个作业,如果作业中任何一条命令执行失败,则整个命令停止执行,即失败命令后的其它命令都不会再被执行。这种方式是最常使用的方式,特别对于后台执行。
  3、运行脚本(又能细分为几种方式如下:)
  C:>rman TARGET / @backup_db.rman
  RMAN> @backup_db.rman
  RMAN> RUN { @backup_db.rman }
  运行存储在恢复目录中的脚本(需要首先为rman创建恢复目录)
  RMAN> RUN { EXECUTE SCRIPT. backup_whole_db };
  看看,够灵活吧。
  4、操作系统脚本(linux,windows环境下小有差异,但只是操作系统命令的不同)
  C:>rman cmdfile=backup_db.rman
明眼人看的出来,后两种其实是前面两种加上操作系统命令的综合应用。

7、执行SQL语句(rman中的sql环境不能执行SELECT语句)
  RMAN> SQL 'ALTER SYSTEM ARCHIVE LOG ALL';


8、RMAN备份相关的动态性能表
  V$ARCHIVED_LOG:本视图包含了所有归档重做日志文件的创建情况,备份情况以及其他信息。
  V$BACKUP_CORRUPTION:这个视图显示了RMAN在哪些备份集中发现了损坏的数据坏。在你使用BACKUP VALIDATE命令对备份集进行检查时如果发现了损坏的数据块,RMAN将在这个视图中写入记录。
  V$COPY_CORRUPTIO:本视图显示了哪些镜像复制备份文件已经被损坏。
  V$BACKUP_DATAFILE:本视图通常用来获取每个数据文件中非空白数据块的数量,从而帮助你创建出大小基本相等的备份集。另外,在视图中也包含了数据文件中损坏的数据块的信息。
  V$BACKUP_REDOLOG:本视图显示了在现有的备份集中饮食有哪些归档重做日志文件。
  V$BACKUP_SET:本视图显示了已经创建的备份集的信息。
  V$BACKUP_PIECT:本视图显示了已经创建的备份片段的信息。
可以通过如下SQL语句获得正在进行的镜像复制操作的状态信息:
Select sid,
       serial#,
       context,
       sofar,
       totalwork,
       round(sofar / totalwork * 100, 2) "% Complete"
  From v$session_longops
where opname like 'RMAN:%'
   and opname not like 'RMAN:aggregate%'
通过如下SQL获得rman用来完成备份操作的服务进程的SID与SPID信息:
Select sid,spid,client_info from v$process p,v$session s where p.addr=s.paddr and client_info like '%id=rman%'

你可能感兴趣的:(常用命令)