您的位置:首页 > 其它

RMAN常用的命令和操作

2013-04-28 13:22 281 查看
常用的命令和操作:

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:\backup\DEMO_19.bak';

  

  6、删除所有备份集

  RMAN> delete backup;

  

  7、删除特定映像副本

  RMAN> delete datafilecopy 'd:\backup\DEMO_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%'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: