RMAN backup

rman 本质上是一个客户端的应用程序,用来建立到目标数据库之的间连接,
并在目标数据库上创建对应的服务器进程。

rman 登录
    格式:
        rman target user_name/password@network_service_name
 [catalog user_name/password@network_service_name]

    如:
 rman target /
     rman target sys/oracle
 rman target sys/oracle@t173

 rman target sys/oracle@t173 catalog sys/oracle@CAT

 登录后提示符就变成 RMAN> 了 

RMAN环境配置:
    RMAN> show all;   #查看rman环境配置

 在所有的配置参数中,强烈建议设置控制文件自动备份。

    RMAN> configure controlfile autobackup on;
 开启控制文件自动备份后,下次只要有备份就会自动备份控制文件
 另外数据库的物理结构发生变化时,会自动备份控制文

 自动备份的位置:闪回区
 
    RMAN> configure controlfile autobackup format for device type disk
       2> to '/u03/rman/ctlbak/%F';


RMAN备份时的备份类型:
    备份集(backupset)
 将数据文件里,使用过的数据块取出,放到备份文件中。
 在进行备份集备份时,会产生一个备份片的概念。
 备份片就是备份产生的物理备份文件,一个备份集能产生多个备份片
 备份集是这些片的集合。

 在rman中可以设置一个备份片的最大大小,如:
 RMAN> configure channel device type disk
  format '/u03/rman/%U' maxpiecesize 500m;

 这样一个大的备份集就会产生多个备份片

    镜像副本(copy)
 类似于通过复制来备份数据文件。

备份时的格式符:
    %d  数据库名称
    %I  数据库DBID
    %e    归档日志序列号
    %D          该月的第几天
    %M   月份数 
    %T   yyyymmdd
    %F  用于控制文件,基于DBID的唯一名字
    %N   表空间名
    %U    唯一文件名
    %s  备份集号
    %p  备份片号

rman 命令类型:
    1、独立命令
 只能在RMAN的提示符下运行,如:
 connect target /
 create catalog

    2、作业命令
 只能在作业中使用,作业与事务类似,它是用 run {   } 
 括起来的一系列命令,执行时要么全成功,要么全失败。
 如: allocate channel
 
    3、独立或作业命令
 即可以RMAN提示符下用,也可以在作业中用
 如:  backup   restore   recover

RMAN备份:
    backup [backup_level] <backup_object> [option]
 backup_level有:
     full          完全备份
     incremental   增量备


 backup_object
     database
     tablespace
     datafile
     spfile
        archivelog

 option
     format
     tag
     channel
     maxsetsize


例:备份数据库
 backup database;
 backup as backupset database;
 RMAN> backup as backupset database
  format '/u03/rman/%d_%T_%s_%p';

 默认的备份位置:如果没设通道,放在闪回中
 如果设置了通道,放在通道指定的位置

例:备份表空间:
 backup tablespace users;

例:备份时限制备份集大小(备份时指定)
 backup as backupset database format '/u03/rman/%d_%T_%s_%p'
  maxsetsize 600m;
  
例:限制备份片大小(在通道指定)
 CONFIGURE CHANNEL DEVICE TYPE DISK
  FORMAT '/u03/rman/%U' MAXPIECESIZE 500 M;
 
 RMAN> run {
 2> allocate channel c1 device type disk format
  '/u03/rman/%d_%T_%s_%p'
 3> maxpiecesize 200m;
 4> backup as backupset database channel c1;
 5> release channel c1;
 6> }

备份数据文件:
     RMAN> backup datafile 2;

另外,为了加快备份速度可以启用多通道(对cpu、io有一定的要求)
使用多通道要在run {}  块中。
 RMAN> run {
 2> allocate channel c1 device type disk format
   '/u03/rman/c1_%T_%s_%p';
 3> allocate channel c2 device type disk format
   '/u04/backup/c2_%T_%s_%p';
 4> backup tablespace system channel c1;
 5> backup tablespace users channel c2;
 6> release channel c1;
 7> release channel c2;
 8> }


10中提供了对备份集的压缩功能,即压缩备份:
 backup as compressed backupset ......

   
RMAN 也提供了对数据文件检测、检验的功能
 RMAN> backup validate database;    #检验数据文件的物理、逻辑损坏
 

备份归档日志:
 backup archivelog ...
 RMAN> backup archivelog all
  format '/u03/rman/arch_log_%d_%T_%s_%p';  #备所有归档

 RMAN> backup archivelog from time 'sysdate-3';  
       #备份最近三天来的归档

 RMAN> backup archivelog from sequence 5;

 RMAN> backup archivelog from sequence 5 until sequence 8;

 RMAN> backup archivelog all delete all input;
                            #备份完后,将原来的归档删除

 RMAN> backup tablespace users plus archivelog;


平时清归档
 不要直接到归档目录去删除归档日志文件,而是在RMAN中删除。
 
备份控制文件:
 RMAN> backup current controlfile;

 RMAN> backup tablespace users include current controlfile
         [plus archivelog];

备份参数文件:
 RMAN只能备份SPFILE
 
 backup spfile;

多重备份:
    多重备份,即同时备几份放到不同的地方

 RMAN> backup copies 2 tablespace users
     format '/u03/rman/%d_%T_%s_%p','/u04/backup/%d_%T_%s_%p';
 
 RMAN> run {
 2> set backup copies=2;
 3> backup tablespace users format '/u03/rman/%d_%T_%s_%p',
 4> '/u04/backup/%d_%T_%s_%p';
 5> }

RMAN日志功能
    就是将RMAN的执行的输出结果放到文件中保存

    方法一(spool log):
 RMAN> spool log to '/home/oracle/rman.log' append;
 RMAN> backup tablespace system;
 RMAN> spool log off;

    方法二(使用rman带的日志功能)
 shell$ rman target /
                 log=/home/oracle/rman_`date +%Y-%m-%d_%H:%M:%S`.log


RMAN增量备份:
    增量备只备份上一次备份以来发生变化过的数据块
    增量备只能对数据文件。
 
    增量备类型:
 差异增量
     从小于等于当前备份级别的最近一次备份开始备

 累积增量
     从小于当前备份级别的最近一次备份开始备

    增量备的基础是0级备,就是说要做增量备的话,必须先做一个0级备(实际是全备)

增量备的方法:
    差异增量:
 1)
     RMAN> backup incremental level 0 database;  #做一个起点
 2)
     RMAN> backup incremental level 2 database;  #实施增量备
    
    累积增量:
 1)
     RMAN> backup incremental level 0 database;  #做一个起点

 2)
     RMAN> backup incremental level 1 cumulative database;


块变化跟踪
 10G,为了加快增量备的速度,引入了一个文件,用来记录自上一次备份
 以来,变化过的数据块地址,该文件叫变化中跟踪文件。
    启用:
 SQL> alter database enable block change tracking using
                  file '/u02/bct.trc';

    禁用:
 SQL> alter database disable block change tracking;


    查询:
 SQL> select * from v$block_change_tracking;


RMAN信息查询:
     RMAN> list backup   查看备份
 
 RMAN> list backup of tablespace users;

 RMAN> list backupset 73;

 RMAN> list copy;    查看镜象副本或归档日志

 RMAN> list archivelog all;    查看归档日志

 RMAN> list archivelog from time='sysdate-2';

 RMAN> list backup of spfile;

 RMAN> list backup of controlfile;

 RMAN> report schema;      报告数据库物理文件
 
 RMAN> report obsolete;    报告过期(废弃)的备份

 RMAN> report need backup; 报告需要备份的文件
 
 RMAN> report need backup days 3;

 RMAN> list expired backup;  显示备份片已丢失的备份

检测备份:
 RMAN> crosscheck backup;

删除备份:
 RMAN> delete backup; 删除所有备份
 
 RMAN> delete backupset 83;

 RMAN> delete noprompt backupset 86;   删除时不要提示

 RMAN> delete noprompt expired backupset;
                                     删除备份片丢失的备份不提示

 RMAN> delete obsolete;   删除过期(多余)的备份


检测备份:
 RMAN> validate backupset 87;

   
 [oracle@t183 ~]$ dbv file=sysaux01.dbf  
     #dbv是一个操作系统工具,在操作系统提示符下运行的,而非RMAN

RMAN中执行SQL命令:
 sql 'sql命令',如:

  RMAN> sql 'alter system switch logfile';

自动备份的实现:
    1) 根据需求写一个备份脚本

#!/bin/bash

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/10.2/db_1
export ORACLE_SID=orcl
export LD_LIBRARY_PATH=$ORACLE_HOME/lib

PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export PATH

rman target / log=/home/oracle/rman.log/rman_`date  +%Y-%m-%d_%H:%M:%S`.log <<EOF
run {
        allocate channel c1 device type disk format '/u03/rman/%d_%T_%s_%p';
        allocate channel c2 device type disk format '/u03/rman/%d_%T_%s_%p';
        sql 'alter system switch logfile';
        backup database channel c1;
        backup archivelog all channel c2;
        sql 'alter system switch logfile';
        crosscheck backup;
        crosscheck archivelog all;
        delete noprompt expired backup;
        delete noprompt obsolete;
        delete archivelog until time='sysdate-7';
        release channel c1;
        release channel c2;
}
EOF
   
    2) crontab 定期调用以上脚本来达到定期备份的目的
 [oracle@t183]$ crontab -e
  10 2 * * * /home/oracle/rman_backup.sh
 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值