Oracle10g Data Guard (Standby) 理论与实践
http://www.linuxidc.com/Linux/2011-03/33521.htm
http://tech.it168.com/db/2008-02-26/200802261700804.shtml
1. ARCH网络传输模式
Primary DB中一旦ARC0完成redo log的归档,ARC1进程即开始传输该归档到Standby库
指定的路径,在Standby上的RFS(Remote File Server) 进程轮流将redo数据写入standby
redo log, 再由standby上的ARCn进程将其写入Standby归档日志,然后通过redo应用
(物理备库) 或 SQL应用(逻辑备库)将数据应用到Standby库 (物理备库采用MRP进程-
Media Recovery process , 逻辑备库采用LSP-Logical Standby Process) .
备注: 如果是Real Time Apply, 直接从Standby redo log通过MRP或LSP应用到standby库。
如果不存在Standby redo log文件,那么ARC1进程传输归档到Standby库指定位置。由MRP
进程直接对归档进行应用。
2. LGWR 网络传输模式
Standby数据库的LGWR进程会先选择一个standby redo log文件映射primary数据库当前
redo log的sequence(以及文件大小),一旦primary数据库有redo数据产生,会以同步(SYNC)
或非同步(ASYNC)方式传输到standby数据库。
使用LGWR 进程来传送redo数据到远程归档目的地。我们还需要指定SYNC(同步)还是ASYNC
(异步)的传输方式。
SYNC属性(默认是SYNC): primary数据库任何时候产生redo操作都会同步触发网络I/O,
并且等到网络I/O全部完成才会继续下面的提交,
ASYNC属性 : primary数据库的操作会先记录online redo logs,然后再传输到standby。
3. LGWR 网络传输模式工作流程
在primary数据库,LGWR提交redo数据到LNSn (LGWR Network Server process, 存在的
目的就是减轻LGWR进程的负担)进程(n>0),LNSn启动网络传输(传输给standby上的RFS)。
standby的RFS(Remote File Server)将接收到的redo数据写入standby redo log。
一旦primary数据库执行日志切换,就会级联触发standby的ARCn将standby redo写入
归档,然后通过redo应用(MRP进程)或sql应用(LSP进程)读取归档文件将数据应用至
standby数据库。
如果启用了实时应用的话,MRP/LSP会直接读取standby redo log并应用到standby
数据库,无须再等待归档 。
启动实时应用和没有启动实时应用的区别:
SQL> alter database recover managed standby database using current logfile disconnect;
SQL> alter database recover managed standby database disconnect;
3. Primary DB及Standby上的相关进程
在Primary DB中,相关的主要进程有:
LGWR:写log进程, 用于将SGA中log buffer的内容写入redo log文件。
LNS(Logwriter Network Service):用于读取LGWR进程flush的redo,并将其传输到SDB。其存在的目的就是减轻LGWR进程
的负担。
ARCH:依然是将已经写满的ORL文件进行归档。但是会有一个比较特殊的ARCH会用于redo log gap的定位与恢复。
在SDB中,相关的进程有:
RFS(Remote File Server):接收PDB发送的redo data,并将这些放入network buffer中的内容写入standby
redo log(SRL)。
ARCH:同PDB上的ARCH进程作用类似,为SRL文件产生相应的归档文件。
MRP(Managed Recovery Process):用于协调介质恢复管理,唤起物理standby为永久的恢复模式。它还负责将
redo data从相应的SRLs或归档文件中读入到用于恢复的共享空间结构。
LSP(Logical Standby Process):该进程主要是在逻辑standby中协调SQL Apply的。
PR0x(recovery server Process):读取SRL或归档日志文件中的redo,并将其应用于SDB上。
-----------------------------------------------------------
最大性能模式下:primay上的事务commit前不需要从standby上收到反馈信息,该模式在primary故障
时可能丢失数据,但standby对primary的性能影响最小。oracle这样做的目的是为了尽量减少数据的
不一致的时间差, 如果用arch, 那数据不同步的时间差就相对来说要大一些了。
最大性能:
进程LGWR/ARCH
网络传输模式LGWR SYNC/LGWR ASYNC/ARCH
Standby Redo Log: LGWR时需要, ARCH传输时建议有.
磁盘写操作: NOAFFIRM
最大性能是默认的保护模式.
-----------------------------------------------------------
最大保护模式下: primay上的事务在commit前必须确认redo已经传递到至少一个standby上,如果
所有standby不可用,则primary会挂起。该模式能保证零数据丢失, 一般为保证主库在某个从库故
障后仍能正常运行, 最好配置两个及以上的从库.
最大保护:
进程LGWR
网络传输模式LGWR SYNC
Standby Redo Log: 需要
磁盘写操作: AFFIRM
-----------------------------------------------------------
最大可用模式下:oracle以最大保护模式运行,如果出现备库不能及时提交现象,primary不会挂起,
自动转换为以最大性能模式运行。所以standby故障不会导致primay不可用。 只有当所有的redo data
传输到standby logfile后, 数据库才会自动升格为最大可用模式 .
最大可用 :
进程LGWR
网络传输模式LGWR SYNC
Standby Redo Log: 需要
磁盘写操作: AFFIRM
-----------------------------------------------------------
对于最大保护和最高可用性模式,Standby数据库必须配置standby redo log,并且oracle推荐
所有数据库都使用LGWR ASYNC模式传输。
-----------------------------------------------------------
LGWR network server process (LNS),
ARCH传输模式:传统的日志传送模式,归档日志通过primary上的arch进程传送给standby的RFS进程。
LGWR传输模式:oracle9i开始可以使用LGWR即时将日志传送到standby,而不再需要等到归档操作
时才传送,已减少可能的数据丢失。如果不明确指定的话,默认是SYNC .
在三种保护模式下都可以使用该方式传送日志。使用LGWR方式传送,在standby必须先建立standby
redo logfile。
lns--->redo lgwr传输 sync
lns--->redo lgwr传输 async
rfs--->arch 传输
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-707975/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/35489/viewspace-707975/
1211

被折叠的 条评论
为什么被折叠?



