RMAN是Oracle推荐的备份和恢复工具(Recovery Manager)
RMAN能够即开即用
关于备份:
在备份之前需要明确几个目标:
1. 冷备份还是热备份
2. 全部备份还是局部备份
3. 全备还是增备?
1. 热备只能在DB处于归档模式下才能够进行,假如数据库处在非归档的状态下,那么只能够进行关闭状态下的备份,并且DB必须在mount模式,然后执行干净关闭(RMAN需要读取控制文件(会创建个快照,防止更改),以便查找数据)
2. 全部备份指的是备份所有数据文件和控制文件,局部备份只备份其子集
3. 完整备份备份所有使用的块,增备只备份上次备份之后更改的块
增量备份可以是累计增量备份(自从上一次全备以来更改的所有块)或者是差异增量备份(自从上一次增量备份以来更改的所有块),
上面的备份方式还是需要看实际情况任意组合
RMAN能备份的文件类型:
数据文件
控制文件
归档重做日志文件
spfile就是服务器参数文件,不能手工修改,需要alter ... scope=spfile进行修改(9i之后采用这种方式进行存储参数文件)
注意RMAN不能备份的文件包括:
临时文件(本来就不是长久的)
redo()
口令文件(直接把口令文件备份一次就行了,不用每次都备)
静态PFILE,是文本文件,是初始化参数文件(oracle 9i之前的)
Oracle NET 配置文件
为什么不能备份redo:
在plus archivelog 模式下,当使用rman进行备份时,会执行ALTER SYSTEM ARCHIVELOG CURRENT 的命令,对online redo进行切换,并备份archivelog ,等同于备份了执行RMAN时刻的online redo,
假如不在archivelog模式下,那么数据库是关闭的,此时数据库处于一致状态(别忘了假如是shutdown abort的话是不建议进行备份的哦),当进行关闭的时候,数据库进行所有未完成事务的回滚,并且数据库强制进行检查点进程,将内存中的所有脏块进行DBWn进磁盘中的数据文件,此时也是不需要redo文件了
当需要备份archivelog的情况下,需要加上plus archivelog参数,流程为:
1. 运行一个ALTER SYSTEM ARCHIVELOG CURRENT命令
2. 运行BACKUP ARCHIVELOG ALL命令。注意如果备份优化被启用,RMAN只会备份未备份过的日志
3. 备份BACKUP命令中定义的文件
4. 运行ALTER SYSTEM ARCHIVELOG CURRENT命令
5. 备份所有的剩下的归档日志
##注意:在通常写脚本的时候经常会在脚本中手动加上ALTER SYSTEM ARCHIVELOG CURRENT这个命令,为了确保一致性
RMAN能够生成三类备份:
1. 备份集:是专用格式,能够包含多个文件,但是不包括当前不是备份段一部分的数据文件的块,注意是由被称为备份片的一个或者多个物理文件组成的,能够进行压缩或者增量备份等,但是必须由RMAN来恢复
2. 压缩备份集:和备份集内容相同,只是在写出到备份集中时将会使用压缩算法(耗CPU,节省IO)
3. 映像副本,是和输入文件相同的备份文件,映像副本能够和源内容立即交换,而在从备份集中提取文件时,需要执行RMAN还原操作,这个就和OS中的cp一样,这种不能进行增量备份,一定是全部备份和完整备份,需要的磁盘空间和原数据文件是一样的,但是恢复的时候最快,直接把文件放到地方或者创建硬链接就行了,无需任何额外处理
备份集可以是完整或者增量的,但是映像副本只能是完整的
RMAN由被称为通道(channel)的服务器进程执行
RMAN存储库是有关备份的元数据:构成备份集的片的名称和位置,包含在其中的文件以及映像副本的名称和位置,存储库是自动化还原和操作的关键:RMAN通过读取它来计算出还原和恢复损坏的数据文件的最有效方式,存储库存储在目标数据库的控制文件中,也能存储在目录数据库中创建的一组表中,使用目录能够大大增强RMAN的能力
RMAN能够并发对多个数据库创建多个会话,RMAN在oracle的主目录中,能够像其他任何用户进程那样登录到数据库,然后启动其他服务器进程来复制文件
使用RMAN执行打开状态的增量备份
在Oracle中,增量备份是分等级的,级别从0开始一级一级递增,但是使用最多的也就是0和1,0级别是后面所有增量备份的基础,实际上就是一个完全备份,但是和普通的备份唯一的不同点就是0级别备份能够作为其他级别的增量备份的基础,而普通的完全备份是不可能的
从级别1开始,Oracle的增量备份分为差异增量备份和积累增量备份两种,
差异增量备份是自上一次同级别的差异备份或者是上一次更更高级别的备份完成之后的数据库发生改变的数据块
积累增量备份时备份的自从上一次上一级增量备份完成以来数据库发生改变的数据块
RMAN备份全为全备和增量备份
增量备份:分为0 1 2级