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的更多相关文章

  1. 基于Linux下catalog方式的 Oracle 备份策略(RMAN)

    --********************************** -- 基于Linux下 Oracle 备份策略(RMAN) --******************************* ...

  2. Oracle备份恢复之rman备份oracle数据库

    备份需求和rman备份 oracle数据库的备份相关问答: 1)备份时数据库处于何种状态? 备份时数据库处于OPEN状态,这样数据库可以正常工作. 2)备份的数据备份在什么地方? 备份在本地磁盘. 3 ...

  3. oracle备份恢复之rman恢复到异机

    注意事项: 1 此处实验环境为同平台,同字节序,同版本,源机器和目标机器相同的目录结构. 2 目标机器只需要安装oracle数据库软件即可. 3 第一次利用备份恢复测试环境,之后从源机器拷贝备份到目标 ...

  4. Oracle 12c 的RMAN备份

    备份 rman只备份cdb 只备份CDB数据库需要具有SYSDBA或SYSBACKUP权限用户连接到CDB的root环境下,执行backupdatabase root命令即可完成对CDB的备份,方法如 ...

  5. oracle 备份恢复篇(一)---rman

    一,rman介绍 RMAN(Recovery Manager)是随Oracle服务器软件一同安装的工具软件,它可以用来备份和恢复数据库文件.归档日志和控制文件,用来执行完全或不完全的数据库恢复.与传统 ...

  6. oracle备份之备份测试脚本(冷备、热备、rman)

    1.数据库环境 数据库DBID及打开模式SQL> select dbid,open_mode from v$database; DBID OPEN_MODE---------- -------- ...

  7. Oracle备份及备份策略

    第二章. 了解备份的重要性 可以说,从计算机系统出世的那天起,就有了备份这个概念,计算机以其强大的速度处理能力,取代了很多人为的工作,但是,往往很多时候,它又是那么弱不禁风,主板上的芯片.主板电路.内 ...

  8. oracle 备份脚本

    本文是一个shell脚本.主要用于Oracle 数据库备份.默认情况下,在周一晚上进行全备.其他时间进行累积增量备份. 使用方法: 假如脚本保存名为: oracle_backup.sh 使用方法为 o ...

  9. Oracle DB 使用RMAN恢复目录

    • 对恢复目录和RMAN 资料档案库控制文件的使用进行比较• 创建和配置恢复目录• 在恢复目录中注册数据库• 同步恢复目录• 使用RMAN 存储脚本• 备份恢复目录• 创建虚拟专用目录 RMAN 资料 ...

随机推荐

  1. YII2数据库依赖缓存

    首先配置一下缓存,自己选择是用文件缓存还是数据库缓存等. 'cache' => [ 'class' => 'yii\caching\FileCache', ], 然后就可以通过 Yii:: ...

  2. elasticsearch集群管理工具head插件(转)

    elasticsearch-head是一个elasticsearch的集群管理工具,它是完全由html5编写的独立网页程序,你可以通过插件把它集成到es 插件安装方法1: 1.elasticsearc ...

  3. AndroidStudio-使用Translations Editor

    前言 如果你的App支持多语言,你需要正确的管理你的翻译字符串资源.Android Studio提供了翻译编辑器使更容易的查看和管理翻译资源. 关于翻译编辑器 翻译资源存储工程的多个目录下的多个XML ...

  4. java设计模式设计模式

    JAVA设计模式之单例模式   概念: java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例.饿汉式单例.登记式单例. 单例模式有以下特点: 1.单例类只能有一 ...

  5. ASP.NET 5与MVC 6中的新特性

    差点忘了提一句,MVC 6中默认的渲染引擎Razor也将得到更新,以支持C# 6中的新语法.而Razor中的新特性还不只这一点. 在某些情况下,直接在Web页面中嵌入某些JSON数据的方式可能比向服务 ...

  6. Maven初级学习(一)手把手教你Maven安装

    序:学习安装Maven,在Windows和Unix系统上. 一.Windows系统安装MVN 前提正确安装JDK1.5以上的版本 1 下载最先版Mvn http://maven.opache.org/ ...

  7. Form表单中method为get和post的区别

    序,form表单中的方法分为get和post,但你都知道他们之间的区别吗? Form表单中method为get和post的区别: 例子如下,有个Form表单. <form action=&quo ...

  8. 给select添加自定义值和选项

    添加选项: document.getElementById("id_select").options.add(new Option("name", " ...

  9. 搭建 Windows Server 2012 FTP 服务器

    在Server2012打开 服务器管理器,选择 添加角色与功能,添加Web服务下的FTP服务器 单击安装 我们现在C盘创建一个名字为FTP的文件夹,里面创建一个ftp的文件,做测试用,如图 打开服务器 ...

  10. 几个Jquery对话框插件

    项目现状 While Thickbox had its day, it is not maintained any longer, so we recommend you use some alter ...