Oracle备份之RMAN

1.备份:物理备份时文件层次的备份,逻辑备份时数据层次的备份,物理备份为主,逻辑备份作为补充。
物理备份分为用户管理备份和RMAN备份,前者使用SQL命令和OS的cp命令进行文件备份,后者使用RMAN工具份。
Undo Segment:修改记录过程中,记录修改前的状态会被记录到Undo Segment中,这条记录叫作前镜像(before images)。当需要撤销修改比如执行rollback时,就用这条前镜像覆盖现有记录。对于Insert操作,前镜像就是一个空记录,对于Update,Delete操作,前镜像就是修改之前的状态。
2.在数据库恢复过程中,日志和Undo Segment是共同起作用的,二者保证了最终恢复的一致状态。对应两个阶段:前滚(rollforward)和(rollback)。在前滚阶段,在文件上重演日志文件,以把文件恢复到数据库关闭时的状态;但是数据库关闭的时可能很多修改没有提交,这些操作需要回滚,这就需要利用Undo Segment的内容了。
RMAN是一个客户端工具,它本身不能进行真正的恢复工作,真正的工作由服务器上的Server Process完成的,当RMAN连接到数据库,会分配一个Server Process,并由它完成备份恢复操作。备份活动记录可以放在Target Database的控制文件,也可以保存一个单独的数据库catalog,需要考虑catalog数据库备份策略。
3.RMAN支持备份磁盘和磁带,如果使用磁带库,需要通过厂商提供的介质管理库(Media Management Library,MML)进行操作。

Flash Recovery Area空间监控:当空间使用达到90%时,会触发自动删除。删除过程会在alert中记录,如果没有空间可以释放,并且空间使用超过85%,就会记录一个warning日志;如果超过97%,会记录一条critical warning日志,这些日志内容可以从DBA_OUTSTANDING_ALERTS视图中看到。Image Copy不能备份到磁带上,只能备份到磁盘上。
4.备份和恢复:DBA在SCN=100的时刻对数据库做了一个全备份,日志文件(包括归档日志和联机日志文件)中记录了随后的数据库修改操作。在SCN=500的时刻,数据库发生故障,比如因为存储介质故障导致数据文件丢失。这时,就需要从之前的备份中恢复出SCN=500的数据文件,然后在这个文件上重演100--500之间的日志(这些日志在归档日志和联机日志文件中),最后利用UNDO内容对未提交修改进行回滚,最终恢复到SCN=500的一致状态继续对外服务。具体过程如下图:

5.配置备份保留策略:基于恢复窗口和基于冗余的策略。
a.基于恢复窗口的策略:RMAN>configure retention policy to recovery window of 7 days;
保留的备份文件必须要保证恢复到近7天的任意时间点。
恢复窗口用来定义数据库能够恢复到的最早时间点。
假设备份策略是每周执行一次全备,本月1号、14号分作了一次全备,恢复窗口定义是7天,现在日期是23号。对于23号而言,恢复窗口7天就意味着要能确保恢复到7天前(也就是16号)的数据库状态。为了达到这个目的
必须保留14号的全备份和14号之后的所有归档日志,因此,oracle把1号的备份、1号到14号的归档日志评估为过期(Obsolete)并可以删除,而14号的备份以及14号以后的归档日志就不能删除。
b.基于冗余的策略:定义每个文件至少保留几份备份
RMAN>configure retention policy to redundancy 2;
每个文件至少要保留2份备份,如果有3个备份,则按照时间排序,最早那个备份会被评估为过期(Obsolete),可以删除。
c.和保留策略相关的其他操作
(1)查看备份策略:RMAN>show retention policy;
(2)查看过期的Obsolete文件:RMAN>report obsolete;
如果没定义备份策略,report obsolete会报错,RMAN>congfigure retention policy to none;
RMAN>report obsolete;
RMAN-00571:===============================================
RMAN-00569:===========ERROR MESSAGE STACK FOLLOWS=========
RMAN-00571:===============================================
(3)通过指定Recovery Window:
RMAN>report obsolete recovery window of 7 days;
(4)通过指定Redundancy策略:
RMAN>report obsolete redundancy 2;
(5)根据保留策略删除过期文件
RMAN>delete obsolete;
(6)指定Redundancy备份策略:
RMAN>delete obsolete redundancy 2;
(7)指定Recovery Window策略的删除
RMAN>delete obsolete recovery window of 4 days;
(8)禁止保留策略:
禁用备份策略以后,所有的备份都不会被评估为过期(Obsolete)的
RMAN>configure retention policy to none;
6.完全备份和增量备份
如果采用Backup Set方式,全备份就是把数据文件中所有使用到得数据块进行备份;如果采用image copy方式,全备份就是对数据文件一个完整拷贝。而增量备份是把从某一个特定点以来发生变化的数据块做一次备份,这个特定点一般式指上次增量备份的时间点。增量备份产生的文件是backup Set,RMAN只能对数据文件进行增量备份,控制文件,日日志文件不能增量备份。增量备份是在数据块级别上的备份,是对从上次增量备份以来发生变化的数据块进行备份。这个机制有两个优势。其一,介质恢复时,直接用Backup Set中的数据块内容覆盖数据文件中的数据块内容就可以了,而如果使用归档日志进行恢复需要的步骤很多,因此使用增量备份进行恢复要比
使用归档日志进行恢复快得多;其二,增量备份能够获取NOLOGGING操作的数据变化,而这些操作不会被记录到日志上,因此增量备份比只备份归档日志提供更多的数据保护。
7.完全备份:
RMAN>backup database;
RMAN>backup as compressed backupset database;
RMAN>backup as copy database;
例子:先配置控制文件自动备份,然后配置自动备份的控制文件位置在/backup/test/autobackup/,文件格式%F,最后以Image Copy方式对数据库做完全备份,备份文件和数据文件名相同。
run{
    configure controlfile autobackup on;
    configure controlfile autobackup format for device type disk to ‘/bakcup/test/autobackup/%F‘;
    backup as copy db_file_name_convert(‘+data/wxxrzxm‘,‘/backup/test‘) database;
}
在完成数据库备份后,自动备份控制文件,在使用Image Copy方式备份时,通过希望哎指定目录下产生的备份文件和原文件同名,这个可以通过db_file_name_convert参数实现。但注意这个关键字的位置是在datafile或database之前。
RMAN>backup as copy db_file_name_convert=(‘+data/wxxrzxm/datafile‘,‘/backup/test‘) database;
如果想把ASM上的数据文件备份到ASM上,这种方法可能会报错。ORA-15046
RMAN>BACKUP AS COPY DB_FILE_NAME_CONVERT(‘+data/wxxrzxm/datafile‘,‘+arch/wxxrzxm2/datafile‘)database;
ASM是用OMF方式管理数据文件的,OMF方式产生的数据文件名就是tag_name.file_number.incarnation number格式的,其中“incarnation number”是oracle内部产生的用来唯一标识每个文件的数字,这个值不允许手工指定。而上面的命令希望手工指定。因此会报错。
可以用DBCA创建数据库时指去掉OMF功能,去掉OMF的方法就是选择第2个“Use Common Location for all Database Files”。
8.增量备份
a.增量备份只备份发生变化的内容。Oracle是以数据块作为基本存储单位的,每个数据块的块头都有SCN,代表最新的版本号。增量备份通过读取每个数据块头的SCN号,并与上次备份时Checkpoint SCN做比较,如果数据块的SCN大于等于checkponit SCN,就说明这个
数据块可能发生了变化,RMAN就会对这个数据块做一个拷贝,并放在备份文件中。在以前的版本中,Oracle允许定义多个级别的增量备份,在oracle10g只允许0和1两级了,0级相当于做了一次全备份,但是全完备份不能做增量备份的0级使用。增量备份可以加快恢复速度和减少数据丢失,无论备份文件格式Backup Set还是Image Copy都可以享用增量备份的好处,但是只有image copy才能使用增量恢复备份。(Incrementally Updated Backup)
b.增量备份种类
增量备份算法可以分成两类:差异增量备份和累积增量备份
c.差异增量备份(Differential Incremental Backup)
备份要点在于,每次备份的内容是从上次0级或1级备份以来发生改变的内容。比如周日做0级备份,周一到周五都是1级备份,则周一备份的是周一当天发生的改变,依次类推。
差异增量备份的语法:RMAN>backup incremental level=1 database;
d.累积增量备份(Cumulative Incremental backup)
重点在于每次备份的是从上次0级或1级备份以来发生的变化。比如周一备份的是周一发生的变化,周二备份的是周一和周二共2天的变化,周三备份的是周一、周二、周三共3天发生的变化。见图如下:

累积增量备份语法:RMAN>backup incremental level 1 cumulative database;
Level 0:
RMAN>run {
backup as copy db_file_name_convert(‘+data/wxxrzxm‘,‘/backup/test‘) incremental level 0 database tag ‘full_backup‘;
}
Level 1:
RMAN>run {
backup incremental level 1 cumulative for recover of copy with tag ‘full_backup‘ database;
recover coyp of database with tag ‘full_backup‘;
}
9.Block Change Tracing(块改变跟踪)
a.传统的增量备份为了获得需要备份的数据块,必须对数据文件中的所有数据块进行遍历,虽然增量备份减少了备份文件的体积,但是备份效率并不高。
oracle提供了一个特殊的文件叫作Block Change Tracing File,每当数据块发生变化时,相关信息同时记录到这个文件中,这样当RMAN进行增量备份时,
从这个文件就可以获得需要备份的数据块列表,而不必对所有数据块进行遍历,因此提高了增量备份的效率。
b.启动Block Change Tracing
Block Change Tracing功能缺省是关闭的,启用这个功能
SQL>alter database enable block change tracing;
如果不指定文件名称,Oracle会使用缺省的文件位置,这个文件可以从视图中查看:
SQL>select * from v$block_change_tracking;
通过命令手工指定文件位置:
SQL>alter database enable block change tracking using file ‘/u04/oradata/ord/changetracking/chg01.dbf‘;
启动Block change tracking之后就,Oracle会启动一个ctwr进程负责跟踪数据变化。
ps -ef|grep ctwr;
关闭Block Change Tracking
SQL>alter database disable block change tracking;
(1)查看是否启用Block change tracking
SQL>select * from v$block_change_tracking;
(2)1启动功能,指定文件
SQL>alter database enable block change tracking using file ‘/backup/bck‘;
(3)确认修改生效
SQL>select * from v$block_change_tracking;
(4)关闭功能并确认
SQL>alter database disable block change tracking;
select * from v$block_change_tracking;
10.其他的RMAN命令
备份数据库:backup database;
备份归档日志:backup archivelog all;
备份数据库,归档日志、同时删除归档日志:backup database plus archivelog delete input;
Oracle 10g的备份命令增加了duration子句,可以明确告诉Oracle在备份过程中允许的资源消耗,比如希望在2个小时内完成备份:
RMAN>backup duration 2:00 database;
如果在指定的时间无法完成备份任务,RMAN会跑出错误,ORA-19591说明了错误原因是因为超出了指定的时间范围。
如果不希望这种结果,可以使用partial关键字,RMAN会备份尽可能多的文件,而没有来得及备份的文件就会取消。使用Partial时,Oracle推荐同时指定fileperset 1参数,这样能保证产生的每个备份文件都对应一个数据文件。
RMAN>backup duration 0:05 partial database fileperset 1;
如果在指定的时间内没有完成备份,会把未完成的备份任务取消,而已经完成的保留。
使用duration语句时,还可以通过关键字minimize load/time指定希望的负载状态。比如minimize load是希望备份消耗的负载最小。
RMAN>backup duration 0:01 minimize load database;
minimize time是希望花费时间最小:
RMAN>backup duration 0:01 minimize time database;
11.恢复命令
数据库的恢复命令包括两个阶段restore和recover,分别对应者同名命令。
在Oracle10g中,restore命令增加了一个preview子命令,这个命令可以用来提前确定RMAN将使用那些设备进行恢复。
C:/>rman target /
RMAN>spool log to abc.log;
RMAN>restore datafile 1 preview;
RMAN>restore database preview summary;
RMAN>spool log off;
RMAN>exit;
restore datafile 1 preview的输出,可以看出RMAN将选择/backup/test/system01.dbf这个备份文件进行恢复,但是缺少必须的归档日志。
12.查看、检查、维护备份记录
RMAN>list backup;
RMAN>list copy;
如果是EXPIRED或者是X,则说明这个文件不可用,可能从磁盘上删除了。但是RMAN不会自动进行检查,必须使用crosscheck命令检查。
RMAN>crosscheck copy; 输出的failed,succeeded表明检查结果,之后用list命令重新查看,这回对应的文件状态都变成了X,也就是说这些磁盘文件不复存在了。
RMAN>delete expired copy;
13.通过视图查看备份状态
Oracle 10g中新增了2个视图:v$rman_output和v$rman_status,从第一个视图中可以查看每个任务的日志,第2个视图可以查看备份任务的完成状态。
SQL>select output from v$rman_output;
查看每次备份任务的完成状态:
select command_id,row_type,operation,status from v$rman_status order by command_id desc

转自:http://blog.sina.com.cn/s/blog_a32eff2801011fhn.html

时间: 2024-10-07 15:11:07

Oracle备份之RMAN的相关文章

oracle备份 使用RMAN 工具

在日常维护中 备份是我们运维最常做的工作,并且非常重要 . 那九妹带你 使用RMAN 工具备份Orcle 三.使用RMAN工具 RMAN(recovery  manager)是oracle的一个重要工具,用于备份和恢复数据库文件.归档日志和控制文件.也可以用来执行完全或不完全的数据库恢复.RMAN有3种不同的用户接口:命令行方式,GUI方式(集成在OEM中的备份管理器).api方式(用于集成到第三方的备份软件中).它具有如下优点: 1)支持在线热备份 2)支持多级增量备份 3)支持并行备份.恢复

Oracle 学习之RMAN(四)增量备份

RMAN不但能进行数据库.数据文件等全量备份,而且还能做增量备份.增量备份有两大优点: 减少数据库恢复的时间. 数据库恢复是利用归档日志,不断的应用归档日志,将数据库恢复到最新(或者指定状态).但是增量备份只备份被修改了的数据块,在执行恢复时,直接用备份出来的数据块去覆盖数据文件中被更改的数据块. 减少备份时间 增量备份只需备份被修改过的数据块,备份时间和备份存储空间都有相应的减少. 做增量备份的前提,是需要一个基准备份,所有的增量都是针对这个基准来说的.要不然,增量备份无从谈起. 增量备份使用

[转]Oracle DB 使用RMAN创建备份2

归档备份:概念 归档备份:概念 如果需要在指定时间内保留联机备份,RMAN 通常会假定用户可能需要在自执行该备份以来到现在之间的任意时间执行时间点恢复.为了满足这一要求,RMAN 会在此时段内保留归档日志.但是,可能仅需要在指定的时间(如两年)内保留特定备份(并使其保持一致和可恢复).用户不打算恢复到自执行该备份以后的某一时间点,只是希望能够正好恢复到执行该备份的确切时间.此外,用户还需要维护保留策略以使备份区井然有序,因此无法使备份恢复到两年前.为了满足保留数据的商业或法律要求,通常需要这么做

搭建ORACLE DataGuard(使用RMAN备份)

搭建ORACLE DataGuard(使用RMAN备份) 操作系统:windows 2008 数据库:11.1.0.6 一.信息收集 1.配置信息收集 说明  主机名   IP地址      db_name   sid   DB_UNIQUE_NAME  Service_name 主库   dg1  192.168.0.11     orcl    orcl    orcldg1       orcldg1 备库   dg2  192.168.0.22     orcl    orcl    o

Oracle 11g 使用RMAN备份数据库

使用Oracle自带的备份恢复工具RMAN(Recovery Manager)具有以下几种优势: 支持增量备份 能自动管理备份文件 自动化备份与恢复 备份的文件有效性检查 配置快闪恢复区(flash recovery area) 快闪恢复区是存储备份和恢复数据文件以及相关信息的存储区.需要设置两个参数:db_recovery_file_dest_size(快闪恢复区的最大容量),db_recovery_file_dest(快闪恢复区所在的路径). 查看快闪恢复区信息: SQL> show par

oracle 11g 基于备份的rman duplicate

基于备份的rman duplicate 命令来创建standby database 前提条件: 保证原库数据库的备份,归档对于standby 端是完全可见的, 这里假设原库和目标端数据文件,日志文件等所有文件存放结构完全相同: 配置主库,备库静态监听,主库处于归档模式,和force logging 1.对主数据库进行必要的更改. a. 启用 force logging. b. 如果没有密码文件,则创建密码文件. c. 创建备用 redo 日志. d. 修改参数文件,使其适用于 Dataguard

Oracle备份与还原——rman工具

RMAN的恢复与备份RMAN提供了如下好处:RMAN可进行增量备份.备份的大小不取决于数据库大小,而是取决于数据库内的活动程度,增量备份会跳过未改动的块.可联机修补文件的部分讹误数据块,不需要从备份复原文件.这称为块介质恢复.指令简单,不需要复杂的脚本.RMAN允许在备份中跳过未使用过的数据块备份,从而节省时间和储存空间.第一步:创建恢复表空间 第二步:创建RMAN用户并且授权. 第三步:使用RMAN工具链接数据库 第四步:创建恢复目录 第五步:使用register命令注册数据库 前置工作完成后

Oracle 学习之RMAN(五)镜像copy

我们上一讲讲到了RMAN能提供全库备份.表空间备份.数据文件备份.归档日志备份.控制文件及参数文件的备份.RMAN备份出来的文件称之为备份集,RMAN在备份的过程中,只备份已经使用过的数据块.RMAN将多个数据文件打包到一起,生成一个备份集.数据文件与备份集文件不再是一一对应的关系.关于备份集的概念,我们下一讲再详细介绍.本将我们说说RMAN的另一种备份方式--镜像copy. 镜像copy是单个数据文件.控制文件.归档日志的克隆.备份出来的备份文件与数据库文件一一对应.下图描述了备份集与镜像co

-Oracle 11gR2通过RMAN克隆数据库

Oracle Study之--Oracle 11gR2通过RMAN克隆数据库 Purpose of Database Duplication A duplicate database is useful for a variety of purposes, most of which involve testing. You can perform the following tasks in a duplicate database: Test backup and recovery proc