一.Data Guard架构
整个Data Guard体系就是围绕三个关键点展开:
- 日志发送(Redo Send)
- 日志接收(Redo Receive)
- 日志应用(Redo Apply)
二.日志发送
Primary Database产生的redo日志需要发送到standby Database。
发送动作由primary database的LGWR或者ARCH进程完成。
不同的归档目的地可以使用不同的进程;但同一目的地只能选用一种进程
使用ARCH进程发送日志:
- Primary Database 产生redo log 的日志被LGWR进程写到联机日志。
- 当一组联机日志被写满后,会发生日志切换(log switch),并且会触发本地归档;
- 完成本地归档后,联机日志可以被覆盖重用;
- ARC1进程通过Net把归档日志发送给Standby Database的RFS进程。
- Standby Database的RFS进程把接收到的日志写入归档日志;
- Standby Database的MRP进程(Redo Apply)或者LSP进程(SQL Apply)在Standby Database上应用这些日志,进而同步数据。
总结:
- 默认情况下,Primary Database使用ARCH进程发送日志。
- 使用ARCH进程发送日志只支持最高性能保护模式。 对于最大保护和最高可用性两种模式而言,强调的都是一点,redo数据必须实时应用于standby数据库。可使用ARCH进程发送日志并非将redo数据实时应用于standby数据库,而是只有Primary Database日志归档完成后才会将归档日志发送到Standby Database。当Primary Database异常宕机时,就会有部分未归档的数据无法传到Standby Database,造成数据丢失。
使用LGWR进程的SYNC方式
- LGWR进程把日志写到本地日志文件的同时还要发送给本地的LNSn进程,再由LNSn进程把日志通过网络发送给远程目的地
- 必须等待写入本地日志文件操作和通过LNSn进程的网络传送都成功,Primary 数据库上的事务才能提交,这就是SYNC。
- Standby数据库的RFS进程把接收到的日志写入到Standby Redo Log日志中。
- Primary 数据库的日志切换也会触发Standby数据库上的日志切换,即Standby数据库对Standby Redo Log的归档。
- Standby数据库可以使两种恢复方式:1)实时恢复(Real Time Apply),只要RFS把日志写入Standby Redo Log日志中就会立即进行恢复;2)归档时恢复,在完成对Standby Redo Log的归档后才恢复
使用LGWR进程的ASYNC方式
- LGWR负责把日志写入本地日志文件;不必等待LNS进程的网络传送成功。
- LNSn进程异步的将日志发送到Standby数据库
- Primary 数据库的日志切换也会触发Standby数据库上的日志切换,即Standby数据库对Standby Redo Log的归档。
- MRP或LSP 进程恢复归档日志
总结:如果不明确指定,默认是SYNC(同步方式)。
注:11g开始,不再把通过ARCH的日志发送作为一种单独的方式提出。
三.日志接收
Standby数据库的RFS进程接收到日志后,就把日志写到Standby Redo Log或者Archived Log文件中。具体写入哪种文件,取决于Primary 数据库的日志传送方式和Standby数据库的配置。