ITPub博客

首页 > Linux操作系统 > Linux操作系统 > RMAN的原理

RMAN的原理

原创 Linux操作系统 作者:jst143 时间:2011-04-05 21:34:11 0 删除 编辑

今天深入的研究了一下RMAN,想知道它到底是什么原理,这样用起来的时候心里也有底。凡是还是要亲力亲为的好,呵呵!

       RMAN发出备份全库命令后,RMAN生成到目标数据库的bequeath连接,也就是说会检查ORACLA_SID变量中的实例名,并在该在实例上产生一个服务器进程,然后作为sysdba登陆,然后会产生一个作为备份的通道,(在PGA或者是在SGA分配存储)。随后RMAN调用SYS.DBMS_RCVMAN请求数据库结构信息,包括控制文件的信息(当前序列号,创建时间……)由于指定了备份全库,所以RMAN会请求数据库中数据文件信息,并判断是否存在offline数据文件(包括所在的位置和工作方式)。
       RMAN开始备份,为了保持数据一致性RMAN必须构建控制文件快照,接下来RMAN调用DBMS _BACKUP_RESTORE数据包,该调用可以创建备份片。RMAN拥有文件列表,所以它为数据文件读取操作分配内存缓冲区,分配缓冲区后RMAN初始化备份片。一旦初始化了备份片,RMAN会判断是否使用了服务器参数文件,如果使用了则会做为备份的一部分,还要备份控制文件,之后才开始备份数据文件,并将其推至内存。
       为了实现这一功能,通道进程在磁盘上执行预读取操作,并且将多个数据文件读入内存中,RMAN会判断数据块头信息是否仍然为零,如果数据块没有被使用过,就不会发生到输出缓冲区的写操作,同时会丢弃这个数据块(这就RMAN为什么会只备份使用过的数据的原因,也是它的优点)RMAN还会执行检查数据块有没有corruption操作。当检查通过了就被写入到输出缓冲区。一旦输出缓冲区填满了,就被推至备份文件位置。
       在备份数据块的时候,RMAN影子进程会得到备份状态信息。并将它传给V$session_longops视图。查询它能得到信息。
       当数据文件的所有数据块都被读入输入缓冲区并确定了状态之后RMAN就会通过将这个数据文件写入备份片来结束该文件的备份操作。所有数据文件写入备份片之后,RMAN生成最后一个对SYS DBMS BACKUP RESTORE 数据包的调用,该调用在控制文件中写入备份信息(包括备份片名,启动备份操作时的检查点的SCN和完成备份的时间)。

   以上这些都要在归档日至中进行。

        但是我还有个疑问,就是RMAN在运行的时候,是不是在数据一致性的情况下进行的呢?如果是,怎么在这个期间对数据进行增删改呢,如果不是,备份的数据就会不完整,导致数据丢失,查了很多资料,终于找到了答案。如下:
        其实rman备份开始之前的归档是没有用的,可以删除,但是不能在rman备份之前就删除,因为rman有可能备份失败,可以在rman备份成功之后删除之。
        rman备份是一种物理的备份,它直接去读取数据块,因此rman是块级别的备份。从备份的那个时间点开始rman将锁定此刻的数据文件信息,也就是说只是备份数据文件到此刻的信息为之。
        但是rman并不锁定数据文件的使用,也就是说rman的备份,不是数据库一致性状态的备份,由于rman备份是块级别的,它只备份控制文件中已经存在的数据块,同时数据库还在运行之中,那么就有可能会出现某些已经提交的操作,但是dbwn还没有写入数据文件,或者已经被rman备份过的数据块,又重新被修改,等等,
        这些信息rman备份都不会记录,也是rman无法记录的。但是记录这些信息的是redo file,所以在rman完毕建议马上执行日志切换,然后备份归档日志,因为在rman恢复过程中,rman本身备份的数据是不一致的,要靠这些已经归档的redo file信息恢复和保持数据库的一直状态。

        当然备份的归档日志中,可能包含有rman开始之前的归档,这些是没用的,
        其实这些归档文件中真正有用的是从rman备份开始到rman备份结束时刻系统产生的归档日志。
        同时rman在恢复的时候,restore database完毕后,会依次利用归档日志和联机日志进行完全恢复。此时利用的这些归档就是从rman备份开始到rman备份结束产生的归档日志。
        因此备份归档日志是很必要的,当然联机日志也是必须的,这些日志保证了rman能够完全的恢复数据库。

基本上就是这个情况了,所以RAMN是绝对安全的,也是数据库中首选的备份方式,坚决谢绝exp和imp,做什么事情都要专业点。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23577591/viewspace-691733/,如需转载,请注明出处,否则将追究法律责任。

下一篇: SQL*PLUS 环境变量
请登录后发表评论 登录
全部评论

注册时间:2010-05-06

  • 博文量
    109
  • 访问量
    140907