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
Oracle备份之RMAN的更多相关文章
- 基于Linux下catalog方式的 Oracle 备份策略(RMAN)
--********************************** -- 基于Linux下 Oracle 备份策略(RMAN) --******************************* ...
- Oracle备份恢复之rman备份oracle数据库
备份需求和rman备份 oracle数据库的备份相关问答: 1)备份时数据库处于何种状态? 备份时数据库处于OPEN状态,这样数据库可以正常工作. 2)备份的数据备份在什么地方? 备份在本地磁盘. 3 ...
- oracle备份恢复之rman恢复到异机
注意事项: 1 此处实验环境为同平台,同字节序,同版本,源机器和目标机器相同的目录结构. 2 目标机器只需要安装oracle数据库软件即可. 3 第一次利用备份恢复测试环境,之后从源机器拷贝备份到目标 ...
- Oracle 12c 的RMAN备份
备份 rman只备份cdb 只备份CDB数据库需要具有SYSDBA或SYSBACKUP权限用户连接到CDB的root环境下,执行backupdatabase root命令即可完成对CDB的备份,方法如 ...
- oracle 备份恢复篇(一)---rman
一,rman介绍 RMAN(Recovery Manager)是随Oracle服务器软件一同安装的工具软件,它可以用来备份和恢复数据库文件.归档日志和控制文件,用来执行完全或不完全的数据库恢复.与传统 ...
- oracle备份之备份测试脚本(冷备、热备、rman)
1.数据库环境 数据库DBID及打开模式SQL> select dbid,open_mode from v$database; DBID OPEN_MODE---------- -------- ...
- Oracle备份及备份策略
第二章. 了解备份的重要性 可以说,从计算机系统出世的那天起,就有了备份这个概念,计算机以其强大的速度处理能力,取代了很多人为的工作,但是,往往很多时候,它又是那么弱不禁风,主板上的芯片.主板电路.内 ...
- oracle 备份脚本
本文是一个shell脚本.主要用于Oracle 数据库备份.默认情况下,在周一晚上进行全备.其他时间进行累积增量备份. 使用方法: 假如脚本保存名为: oracle_backup.sh 使用方法为 o ...
- Oracle DB 使用RMAN恢复目录
• 对恢复目录和RMAN 资料档案库控制文件的使用进行比较• 创建和配置恢复目录• 在恢复目录中注册数据库• 同步恢复目录• 使用RMAN 存储脚本• 备份恢复目录• 创建虚拟专用目录 RMAN 资料 ...
随机推荐
- maven 错误解决办法集
一.mavenFailed to execute goal org.apache.maven.plugins:maven-surefire-plugin解决方法 1.测试代码没有获得通过,可以尝重命名 ...
- shell学习之路:重定向符号的使用
http://note.youdao.com/share/?id=096963bf2a0862fd338919d781636be2&type=note 快捷键:
- ADB常用命令(Android Debug Bridge)
首先要配置环境变量. adb devices 列出所有的设备 adb start-server 开启adb服务 adb kill-server 关闭adb服务 adb logcat 查看L ...
- app的meta
<meta http-equiv="content-type" content="text/html; charset=UTF-8" /> < ...
- SQL 语句-partition by
/****** ******/ 初始化数据 create table employee (empid int ,deptid int ,salary decimal(10,2)) insert int ...
- nyoj 364 田忌赛马(贪心)
田忌赛马 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 Here is a famous story in Chinese history. "That ...
- POJ 1019 Number Sequence
找规律,先找属于第几个循环,再找属于第几个数的第几位...... Number Sequence Time Limit: 1000MS Memory Limit: 10000K Total Submi ...
- Linux(Ubuntu)安装并破解 SecureFX
根据Linux(Ubuntu)下面SecureCRT 完全破解(地址:http://www.boll.me/archives/680) 添加了Linux(Ubuntu)下面SecureFX 完全破解, ...
- ASP.NET后台输出js大全,页面顶部、form表单中前面与后面、和UpdatePanel(ScriptManager、AJAX)输出JS
Response.Write 与 Page.ClientScript.RegisterStartupScript 与 Page.ClientScript.RegisterClientScriptB ...
- CSS浏览器兼容性与解析问题终极归纳
1.怪异模式问题:漏写DTD声明,Firefox仍然会按照标准模式来解析网页,但在IE中会触发怪异模式.为避免怪异模式给我们带来不必要的麻烦,最好养成书写DTD声明的好习惯. 2.IE6双边距问题:在 ...