oracle RMAN备份

RMAN备份

它能够备份整个数据库或数据库部件,如表空间、数据文件、控制文件、归档文件以及Spfile参数文件。RMAN也允许您进行增量数据块级别的备份,增量RMAN备份是时间和空间有效的,因为他们只备份自上次备份以来有变化的那些数据块。而且,通过RMAN提供的接口,第三方的备份与恢复软件如veritas将提供更强大的备份与恢复的管理功能。通过RMAN,也提供了其它更多功能,如数据库的克隆、采用RMAN建立备用数据库、利用RMAN备份与移动裸设备(RAW)上的文件等工作将变得更方便简单。9i的RMAN通过增强的自动配置与管理功能,以及特有的块级别的恢复,将使备份与恢复工作变得更加快捷与完美。

恢复归档日志到指定路径可以参考如下命令

RUN{
	SET ARCHIVELOG DESTINATION TO '/home/oracle/backup';
	RESTORE ARCHIVELOG all;
}

备份

  • 全备脚本

    #!/bin/bash 
    export ORACLE_HOME=/oracle/ORA/11204
    export ORACLE_SID=ORA
    export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
    backtime=`date +"90%y%m%d%H%M%S"`
    $ORACLE_HOME/bin/rman target / log=/backup/rmanbak/full_backup_$backtime.log <<EOF
    run{
    allocate channel c1 device type disk;
    allocate channel c2 device type disk;
    allocate channel c3 device type disk;
    allocate channel c4 device type disk;
    sql 'alter system archive log current'; 
    backup full database format '/pekorabackup/rmanbak_19/bac/db_%d_%T_%U'; 
    sql 'alter system archive log current';
    backup archivelog all format '/pekorabackup/rmanbak_19/bac/arch_%d_%T_%s_%p.bak';
    backup current controlfile format '/pekorabackup/rmanbak_19/bac/ctl_%T.bkp';
    backup spfile format '/pekorabackup/rmanbak_19/bac/%u.spfile';
    release channel c1;
    release channel c2;
    release channel c3;
    release channel c4;    }
    exit
    EOF
    
  • 追加归档

    • 源库备份归档

      sql 'alter system archive log current';
      BACKUP ARCHIVELOG FROM SCN 12725878082620 format '/pekorabackup/rmanbak_19/bac/n3_ora_scn_%s_%p.bak';
      
    • 目标库追加归档

      sql 'shutdown immediate';
      sql 'startup mount';
      catalog start with '/orabackup/rmanbak/bac';
      recover database;
      

查看备份进度

set linesize 190 pagesize 999;
 col opname for a30;
 col progress for a30;
select case  when opname like '%aggregate%' then 'Total' else opname end opname,
trunc(sofar*100/totalwork,2)||'%' progress,units
from gv$session_longops where opname like 'RMAN%' and totalwork > sofar;

还原相关

  • 还原备份文件时当一个文件夹中含有多个数据库的备份集时,还原的时候要设置dbid

    set dbid ='';
    
  • 查看数据库dbid

    select dbid from v$database;
    -- 或者进入rman时有显示
    

查看备份集信息

  • list backupset summary;
    -- 	每一行代表一次备份,其中第一个字段代表的是备份集的编号。
    备份片号 类型 备份级别 设备类型 完成时间 片数 镜像数 是否压缩 标签
    关键字  TY  LV  S  设备类型  完成时间  段数  副本数  压缩标记  TAG
    
  • 查看某个备份数据文件的备份信息

    list backup of datafile 10 summary;
    
  • 查看某个表空间的备份集信息

    list backup of tablespace users summary;
    
  • 通过备份集的编号查出这个编号下具体的备份内容,包括文件名称和文件编号,备份时间,备份类型等。(不能用)

    list backup tag TAG11111111T111111;
    

rman常用操作

  • show

    show all;    -- 显示rman配置
    
  • report

    report schema    --报告目标数据库的物理结构
    report need backup days=3    --报告最近3天没有被备份的数据文件
    report need backup days 3 tablespace users    --在USERS表空间上3天未备份的数据文件
    report need backup incremental 3    --报告恢复数据文件需要的增量备份个数超过3次的数据文件
    report need backup redundancy 2 database   --报告备份文件低于2份的所有数据文件
    report need backup redundancy=2
    report need backup recovery window of 6 days    --报告文件报表的恢复需要超过6天的归档日志的数据文件
    report unrecoverable    --报告数据库所有不可恢复的数据文件
    report obsolete redunndancy 2    --报告备份次数超过2次的陈旧备份
    report obsolete    --报告多余的备份
    
  • list

    list backup    --列出详细备份;
    -- Type:备份类型,Incr代表增量备份
    list expired backup    --列出过期备份;
    list backup of database    --列出所有数据文件的备份集;
    list backup of tablespace user01    --列出特定表空间的所有数据文件备份集;
    list backup of controlfile    --列出控制文件备份集;
    list backup of archivelog all    --列出归档日志备份集详细信息;
    list archivelog all    --列出归档日志备份集简要信息
    list backup of spfile     --列出SPFILE备份集;
    list copy of datafile 5    --列出数据文件映像副本;
    list copy of controlfile    --列出控制文件映像副本;
    list copy of archivelog all    --列出归档日志映像副本;
    list incarnation of database    --列出对应物/列出数据库副本;
    list backup summary   --概述可用的备份;
    	-- B表示backup
    	-- F表示FULL
    	-- A表示archive log
    	-- 0 1表示incremental backup
    	-- S说明备份状态(AAVAILABLEX EXPIRED )
    list backup by file    按备份类型列出备份;
    	-- 按照数据文件备份,归档日志备份,控制文件备份,服务器参数文件备份 列出
    
    
  • crosscheck

    crosscheck backup    --核对所有备份集;   
    crosscheck backup of database    --核对所有数据文件的备份集;   
    crosscheck backup of tablespace users    --核对特定表空间的备份集;   
    crosscheck backup of datafile 4    --核对特定数据文件的备份集;   
    crosscheck backup of controlfile    --核对控制文件的备份集;   
    crosscheck backup of spfile   --核对SPFILE的备份集;   
    crosscheck backup of archivelog sequence 3     --核对归档日志的备份集;   
    crosscheck copy    --核对所有映像副本;   
    crosscheck copy of database    --核对所有数据文件的映像副本;   
    crosscheck copy of tablespace users   --核对特定表空间的映像副本;   
    crosscheck copy of datafile 6    --核对特定数据文件的映像副本;   
    crosscheck copy of archivelog sequence 4    --核对归档日志的映像副本;   
    crosscheck copy of controlfile    --核对控制文件的映像副本;  
    crosscheck backup tag='SAT_BACKUP'
    crosscheck backup completed after 'sysdate - 2'
    crosscheck backup completed between 'sysdate - 5' and 'sysdate -2 '
    crosscheck backup device type sBT
    crosscheck archivelog all
    crosscheck archivelog like '%ARC00012.001'
    crosscheck archivelog from sequence 12
    crosscheck archivelog until sequence 522
    
  • delete

    delete obsolete    --删除陈旧备份;
    delete expired backup    --删除EXPIRED备份     
    delete expired copy    --删除EXPIRED副本;
    delete backupset 19    --删除特定备份集;
    delete backuppiece ''d:\backup\DEMO_19.bak''    --删除特定备份片;
    delete backup    --删除所有备份集;
    delete datafilecopy ''d:\backup\DEMO_19.bak''    --删除特定映像副本;
    delete copy    --删除所有映像副本;
    delete archivelog all delete input;
    delete backupset 22 format = ''d:\backup\%u.bak'' delete input    --在备份后删除输入对象;
    delete backupset id; 
    

rman 中的MAXSETSIZE和MAXPIECESIZE的用法

  • MAXSETSIZE跟MAXPIECESIZE用法

    区别:maxpiecesize设置的是备份完成后的备份片大小,对备份整体的大小没有影响,比如一个G的备份完成文件,maxpiecesize设置为100M,最后就会变成10个100M的备份文件。Maxsetsize设置限定的是整体大小,个人认为这个功能比较鸡肋,一般只要没人动,就用不到的。

  • maxsetsize的设置

    configure maxsetsize to 2G;
    -- 清除maxsetsize
    configure maxsetsize clear;
    
  • maxpiecesize的用法

    run{
    allocate channel c1 device type disk MAXPIECESIZE 100M;
    backup database format='/u01/app/oracle/oradata/Backup/oradb_%d_%s_%p.bak';
    release channel c1;
    }
    -- 然后每个文件都是100M
    
  • 理解备份集backup set和备份片backup piece

    • 备份集backup set

      存储备份信息的逻辑结构,仅仅是备份信息的逻辑结构而已,通俗说就是存储这个备份集里面都是备份了哪些数据文件以及这个备份集的大小,备份的时间,备份片的

      信息等信息,通俗的说相当于 一本书的序+目录.

      概念不要混淆,MAXSETSIZE指的是BACKUPSET大小,MAXPIECESIZE指的是BACKUP PIECE大小

    • 备份片backup piece

      存储备份集信息的二进制文件.备份集由一个或多个备份片组成,并且每个备份片对应一个OS文件

    • 数据文件可以跨备份片,不能跨备份集

      比如说你定义备份集的MAXSETSIZE参数,该参数的最小值必须大于你所备份的数据文件中最大的数据文件的大小。就是说如果你要备份的所有数据文件中最大的那个文件是350M,那MAXSETSIZE必须大于1G。这个参数默认是没有限制的。

      假如定义备份片的大小,要定义maxpiecesize参数,你可以定义每个备份片300M,这样你的一个备份集就会有多个备份片。因为仅仅350M的那个数据文件就会被分为两个备份片。由此可以看出数据文件可以跨备份片。

    • 概念不要混淆,MAXSETSIZE指的是BACKUPSET大小,MAXPIECESIZE指的是BACKUP PIECE大小

备份格式的定义

%p:piece备份段号。 %d:database 数据库名。%s:备份集号。

%c(copy号):总为1。 %u:自动生成的8个字符的唯一名称。 %t:时间。

默认格式为 %U=%u_%p_%c。

run {
	allocate channe cl type disk;
	backup full filesperset 3
	(database format'rm_%s%p.%d');
	release channel cl;
}

启用控制文件自动备份特性

CONFIGURE CONTROLFILE AUTOBACKUP ON;
-- 更改控制文件自动备份的路径
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup_rman/%T/%F';

RMAN备份FORMAT格式中%的含义

%a:Oracle数据库的activation ID即RESETLOG_ID。

%c:备份片段的复制数(从1开始编号,最大不超过256)。

%d:Oracle数据库名称。

%D:当前时间中的日,格式为DD。

%e:归档序号。

%f:绝对文件编号。

%F:基于"DBID+时间"确定的唯一名称,格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII 为该数据库的DBID,YYYYMMDD为日期,QQ是一个1~256的序列。

%h:归档日志线程号。

%I:Oracle数据库的DBID。

%M:当前时间中的月,格式为MM。

%N:表空间名称。

%n:数据库名称,并且会在右侧用x字符进行填充,使其保持长度为8。比如数据库名JSSBOOK,则生成的名称则是JSSBOOKx。

%p:备份集中备份片段的编号,从1开始。

%s:备份集号。

%t:备份集时间戳。

%T:当前时间的年月日格式(YYYYMMDD)。

%u:是一个由备份集编号和建立时间压缩后组成的8字符名称。利用%u可以为每个备份集生成一个唯一的名称。

%U:默认是%u_%p_%c的简写形式,利用它可以为每一个备份片段(即磁盘文件)生成一个唯一名称,这是最常用的命名方式,执行不同备份操作时,生成的规则也不同,如下所示:

生成备份片段时,%U=%u_%p_%c;

生成数据文件镜像复制时,%U=data-D-%d_id-%I_TS-%N_FNO-%f_%u;

生成归档文件镜像复制时,%U=arch-D_%d-id-%I_S-%e_T-%h_A-%a_%u;

生成控制文件镜像复制时,%U=cf-D_%d-id-%I_%u。

%Y:当前时间中的年,格式为YYYY。

注:如果在BACKUP命令中没有指定FORMAT选项,则RMAN默认使用%U为备份片段命名

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值