RMAN常用命令总结

常用的命令和操作:

1backupCOPY

2list

3deletecrosscheck

4change

5rman>report schema; --查看数据库有哪些表空间和数据文件

6、备份脚本

7、执行SQL语句(rman中的sql环境不能执行SELECT语句)

8RMAN备份相关的动态性能表

9、加速增量备份

 

1backupcopy

backup 逻辑物理备,基于块级别的备份,已经使用过的块--热点块

备份格式 (spfile,datafile,controlfile,tabalspace,archivelog,database)

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;   备份归档包括当前日志v$log也切换了已经验证

 

BACKUP DATABASE PLUS ARCHIVELOG;

  则在备份数据库的同时自动对所有归档文件进行备份。这种方式与上种有什么区别呢区别太明显了BACKUP.....PLUS ARCHIVELOG命令在备份过程中会依次执行下列步骤

  1>.运行ALTER SYSTEM ARCHIVE LOG CURRENT语句对当前redolog进行归档。

  2>.执行BACKUP ARCHIVELOGALL命令备份所有已归档日志。

  3>.执行BACKUP命令对指定项进行备份。

  4>.再次运行ALTER SYSTEM ARCHIVE LOG CURRENT对当前redolog归档。

  5>.对新生成的尚未备份的归档文件进行备份。

------------------------------------------------------

backup archivelog all delete input;  备份默认目录下所有归档日志,并且删除这个目录下所有归档日志

(链接:http://www.itpub.net/thread-1039151-1-1.html多个目的归档,执行这个命令会不分目录删除文档,也就是删除一个拷贝)。

backup archivelog all delete all 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;

 

    1.设置备份标记

        backup database tag='full_bak1';

        每个标记必须唯一相同的标记可以用于多个备份只还原最新的备份。

 

    2.设置备份集大小(一次备份的所有结果为一个备份集,要注意备份集大小)

        backup database maxsetsize=100m tag='datafile1';

        注:maxsetsize限定备份集的大小。所以必须大于数据库总数据文件的大小,否则会报错。

      RMAN-06183: datafile or datafile copy larger than MAXSETSIZE: file# 1 /data/oradata/system01.dbf

 

    3.设置备份片大小(磁带或文件系统限制)

        run {

        allocate channel c1 type disk maxpicecsize 100m format '/data/backup/full_0_%U_%T';

        backup database tag='full_0';

        release channel c1;

        }

        可以在allocate子句中设定每个备份片的大小以达到磁带或系统限制。

        也可以在configure中设置备份片大小。

        Configure channel device type disk maxpiecesize 100 m;

        configure channel device type disk clear;

 

    4.备份集的保存策略

        backup database keep forever;                  --永久保留备份文件

        backup database keep until time='sysdate+30'; --保存备份30

 

 

    5.重写configure exclude命令

        backup databas noexclude keep forever tag='test backup';

 

    6.检查数据库错误

        backup validate database;

        使用RMAN来扫描数据库的物理/逻辑错误,并不执行实际备份。

 

    (7.跳过脱机,不可存取或只读文件

        backup database skip readonly;

        backup database skip offline;

        backup database skip inaccessible;

        backup database skip readonly skip offline ship inaccessible;

 

    (8.强制备份

        backup database force;

 

    (9.基于上次备份时间备份数据文件

        1>只备份添加的新数据文件

            backup database not backed up;

        2>备份"在限定时间周期内"没有被备份的数据文件

            backup database not backed up since time='sysdate-2';

 

    (10.备份操作期间检查逻辑错误

        backup check logical database;

        backup validate check logical database;

 

    (11.生成备份副本

        backup database copies=2;

 

    (12.备份控制文件

        backup database device type disk includ current controlfile;

-----------------------------------------------------------------------

补充点内容

块跟踪10g):记录自从上一次备份以来数据块的变化相关后台进程CTWRChange 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 '';

 

2list

list backup

list backup of database summary;

查看镜像拷贝:

list copy;

list copy of datafile 4;

list copy of controlfile;

查看创建的脚本list script names;

 

list incarnation;

    list backup summary;

    list backup of database summary;

    list backup of tablespace summary;

    list backup of datafile n,n summary;

    list archivelog all summary;

 

    list backup by file;

    list backup;

    list expired backup;

    list copy;

 

    list backup of spfile;

    list backup of controlfile;

    list backup datafile n,n,n;

    list backup tablespace tablespace_name;

    list backup of archivelog all;

    list backup of archivelog from scn ...;

    list backup of archivelog until scn ...;

    list backup of archivelog from sequence ..;

    list backup of archivelog until time 'sysdate-10';

    list backup of archivelog {all, from, high, like, logseq, low, scn, sequence, time, until};

 

list backup summary; --概述可用的备份

 

        B 表示backup

        A 表示Archivelog F表示full backup 0,1,2表示incremental level备份

        A 表示可用AVALIABLE X表示EXPIRED

 

        这个命令可以派生出很多类似命令,例如

        list backup of database summary

        list backup of archivelog all summary

        list backup of tablespace users summary;

        list backup of datafile n,n,n summary

 

    这些命令可以让我们对已有的备份文件有一个整体,直观的了解。

 

list backup of {archivelog, controlfile, database, datafile, spfile, tablespace};

    list backup of database; --full,incremental,tablespace,datafile

 

服务器参数文件:

    list backup of spfile;

 

控制文件

    list backup of controlfile;

 

数据文件

    list backup of datafle n,n,n,n;

 

表空间

    list backup of tablespace tablespace_name;--表空间对应的backup

 

归档日志

    list backup of archivelog {all, from, high, like, logseq, low, scn, sequence, time, until};

    list backup of archivelog all;

    list backup of archivelog until time 'sysdate-1';

    list backup of archivelog from sequence 10;

    list backup of archivelog until sequence 10;

    list backup of archivelog from scn 10000;

    list backup of archivelog until scn 200000;

 

    list archivelog from scn 1000;

    list archivelog until scn 2000;

    list archivelog from sequence 10;

    list archivelog until sequence 12;

 

3deletecrosscheck

  (1、删除陈旧备份

  当使用RMAN执行备份操作时,RMAN会根据备份冗余策略确定陈旧备份。 

   RMAN> crosscheck backup;   

  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; 

 

(3、检测备份存在、正常否正常的是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;

 

4change

change backupset 140 unavilable;

 

5、查看数据库有哪些表空间和数据文件

rman>report schema;

 

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';      所有日志归档,除当前日志

          sql 'alter system archive log current';   对当前日志归档

8RMAN备份相关的动态性能表

  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 '%aggregate%'

AND totalwork != 0

AND sofar <> TOTALWORK;

 

9、加速增量备份(10.2.0开始支持这个参数)

1、查询是否启用

 SQL>  select * from v$block_change_tracking;

STATUS               FILENAME                  BYTES

-------------------- -------------------- ----------

DISABLED

2、启用

SQL>alter database enable block change tracking using file '/oracle/backup/change.ora

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值