关于oracle的rman常用命令

常用的命令和操作: 
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%'

转载于:https://my.oschina.net/u/3548881/blog/968494

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值