RMAN系列(一),RMAN体系结构概述(六)
件的信息,并且判断是否存在离线的数据文件。这些数据文件信息包括每个数据文件所在磁盘和工作方式的信息,由于使用了默认设置,所以只存在一个通道和一个备份集。 这样以来,rman会忽略所有的相似性信息,把注意力放在编译包含在数据集内的文件列表上。
编译了文件列表之后,RMAN 就准备开始执行备份进程。 为了保证一致性,RMAN必须构建快照控制文件。如果存在快照控制文件,RMAN会将这个文件重写为新的快照控制文件。 接下来,RMAN创建对DBMS_BACKUP_RESTORE数据包的调用,该调用可以创建备份片,备份片被构建在默认的文件位置中,UNIX系统中的这个文件位置是ORACLE_HOME/DBS,RMAN 拥有文件列表,所以它可以为磁盘读取操作分配内存缓冲区。假如实例有20个数据文件,这样RMAN 会分配一些大小为128KB的输入缓冲区,由于每个文件有4个输入缓冲区,所以这些输入缓冲区总共就需要10MB内存。RMAN 只分配4个输出缓冲区,每个输出缓冲区为1MB。 所以备份操作总共需要的内存是14MB。
分配了内存之后,RMAN 初始化备份片。备份片会得到一个唯一的默认名。随后RMAN 开始备份。从9i以后,RMAN 以50M 为增量分配磁盘空间,在磁盘上分配50MB的空间并填充输出缓冲区,当输出缓冲区满时,则获取另一个50MB空间,直到将最后一个数据块转存到备份片上。当备份完成时,释放最后一个50MB数据块上的剩余空间。 要注意的是:RMAN 不再检查是否存在用于成功备份操作的足够空间,这是因为空值压缩和新的10g 空白压缩可以极大地减少备份中的数据文件大小。相反,RMAN 将运行它的备份直到空间用完,然后备份失败。
一旦初始化了备份片,通道进程就可以开始数据库备份进程。RMAN会判断是否使用了spfile,如果使用了spfile,RMAN 会自动将该文件备份为备份集的一部分。RMAN 还要在备份集中备份当前控制文件。只要备份了SYSTEM 表空间,就会自动备份当前的控制文件。
完成spfile和控制文件的备份后,就开始读取数据文件并将数据块推入内存,为了实现这一功能,通道进程在磁盘上执行预读(read-ahead)操作,并且将多个数据块同时推入内存。随后发生的是从输入缓冲区到输出缓冲区的内存对内存的写操作,在这个写操作期间,RMAN会判断数据块是否被初始化,或者数据块头信息是否仍然为零。如果数据块未被使用过,就不会发生到输出缓冲区的写操作,同时丢弃这个数据块。如果数据块被使用过,RMAN就会在这个数据块上执行检验和checksum 操作。如果数据块的头和脚注不匹配,这个数据就不会被写入输出缓冲区。一旦输出缓冲区被填满,就会将输出缓冲区的内容转存储到备份文件位置。 由于RMAN缓冲区填充来自所有数据文件的数据块,所以在转存储文件中的数据块是杂乱无序的。 转储文件只是一个存储段,只有RMAN能够在还原时将这些数据块还原到正确的位置。在备份片中写入数据块时,可以从RMAN影子进程中得到备份的状态信息。RMAN影子进程在目标
数据库上检查远程过程调用(RPC),并将信息传递给V$VERSION_LONGOPS视图,以供用户查看。基于在备份操作开始时收集的信息,RMAN会估计每个通道进程完成的百分比,可以通过一下SQL 查看:
==========================================================
/* Formatted on 2010/6/9 22:50:05 (QP5 v5.115.810.9015) */
SELECT sid,
serial#,
context,
sofar,
totalwork,
ROUND (sofar / totalwork * 100, 2) "%_complete"
FROM v$session_longops
WHERE opname LIKE 'RMAN%'
AND OPNAME NOT LIKE '%aggregate%'
AND sofar <> totalwork;
==========================================================
在备份进程期间,可以重复执行这个脚本,来查看剩余工作量信息。
一旦一个数据文件的所有数据块都被读入输入缓冲区并且确定状态,RMAN 就会通过将这个数据文件头写入备份片来结束该文件的备份操作。在所有数据文件头都被写入备份片之后,RMAN 会生成最后一个对SYS.DBMS_BACKUP_RESTORE数据包的调用,该调用在控制文件中写入备份信息,这些备份信息包括备份片名,启动备份操作时的检查点的SCN和完成备份操作的时间。
以上就是备份操作的所有过程。如果想进一步了解备份内存的工作流程,可以启动调试选项,从而得到一个完成的进程列表。不过这个操作可能会影响备份的性能。 最好只在测试环境下使用。
Rman target / debug trace=/u01/backup/rmanback.out
13. 闪回恢复区
闪回恢复区(Flash recovery area: FRA)不是所有RMAN 需要的组件,但是它应该成为RMAN所需的组件。作为10g 版本的新特性,FRA是磁盘上用于存储所有
Oracle 恢复文件的特定位置。 恢复文件是指进行介质恢复时所需的所有文件: 完全的数据文件备份,增量备份,数据文件副本,备份控制文件以及归档的日志。FRA 也存储联机重做日志,块更改跟踪文件以及当前控制文件的镜像副本。