Dataguard之redo传输服务

一.Data Guard架构

  整个Data Guard体系就是围绕三个关键点展开:

  1. 日志发送(Redo Send)
  2. 日志接收(Redo Receive)
  3. 日志应用(Redo Apply)

二.日志发送

Primary Database产生的redo日志需要发送到standby Database。

发送动作由primary database的LGWR或者ARCH进程完成。

不同的归档目的地可以使用不同的进程;但同一目的地只能选用一种进程

使用ARCH进程发送日志:

  1. Primary Database 产生redo log 的日志被LGWR进程写到联机日志。
  2. 当一组联机日志被写满后,会发生日志切换(log switch),并且会触发本地归档;
  3. 完成本地归档后,联机日志可以被覆盖重用;
  4. ARC1进程通过Net把归档日志发送给Standby Database的RFS进程。
  5. Standby Database的RFS进程把接收到的日志写入归档日志;
  6. Standby Database的MRP进程(Redo Apply)或者LSP进程(SQL Apply)在Standby Database上应用这些日志,进而同步数据。

   

总结

  1. 默认情况下,Primary Database使用ARCH进程发送日志。
  2. 使用ARCH进程发送日志只支持最高性能保护模式。  对于最大保护和最高可用性两种模式而言,强调的都是一点,redo数据必须实时应用于standby数据库。可使用ARCH进程发送日志并非将redo数据实时应用于standby数据库,而是只有Primary Database日志归档完成后才会将归档日志发送到Standby Database。当Primary Database异常宕机时,就会有部分未归档的数据无法传到Standby Database,造成数据丢失

使用LGWR进程的SYNC方式

  1. LGWR进程把日志写到本地日志文件的同时还要发送给本地的LNSn进程,再由LNSn进程把日志通过网络发送给远程目的地
  2. 必须等待写入本地日志文件操作和通过LNSn进程的网络传送都成功,Primary 数据库上的事务才能提交,这就是SYNC。
  3. Standby数据库的RFS进程把接收到的日志写入到Standby Redo Log日志中。
  4. Primary 数据库的日志切换也会触发Standby数据库上的日志切换,即Standby数据库对Standby Redo Log的归档。
  5. Standby数据库可以使两种恢复方式:1)实时恢复(Real Time Apply),只要RFS把日志写入Standby Redo Log日志中就会立即进行恢复;2)归档时恢复,在完成对Standby Redo Log的归档后才恢复

使用LGWR进程的ASYNC方式

  1. LGWR负责把日志写入本地日志文件;不必等待LNS进程的网络传送成功。
  2. LNSn进程异步的将日志发送到Standby数据库
  3. Primary 数据库的日志切换也会触发Standby数据库上的日志切换,即Standby数据库对Standby Redo Log的归档。
  4. MRP或LSP 进程恢复归档日志

总结如果不明确指定,默认是SYNC(同步方式)。

注:11g开始,不再把通过ARCH的日志发送作为一种单独的方式提出。

三.日志接收

         Standby数据库的RFS进程接收到日志后,就把日志写到Standby Redo Log或者Archived Log文件中。具体写入哪种文件,取决于Primary 数据库的日志传送方式和Standby数据库的配置。 

原文地址:https://www.cnblogs.com/polestar/p/4150576.html