Oracle RAC SCN传播方式(Broadcast-On-Commit)

BOC的SCN传播方式的前提是,只有当某个节点的SCN发生改变时才进行传播,LGWR进程会与LMS进程协同工作来同步节点间的SCN,LGWR负责将redo信息写入重做日志文件并发送最新的SCN,LMS进程负责节点间SCN信息的传播。


BOC的SCN传播方式分为两种:间接方式和直接方式


间接方式需要经历8个步骤:

步骤1:用户进程提交事务,并通知LGWR进程,之后进入等待状态,对应的等待事件是log file sync。

步骤2:LGWR进程将事务的提交SCN发送给本地的一个LMS进程。

步骤3:LGWR进程将事务对应的重新信息写入重做日志文件。

步骤4:本地节点的LMS进程将包含了SCN的信息发送给所有远程节点的LMS进程。

步骤5:所有远程节点的LMS进程接收到了SCN信息并反馈给本地节点的LMS进程。

步骤6:重新信息的I/O请求完成,并反馈给LGWR进程。

步骤7:本地节点的LMS进程通知LGWR,所有远程节点都已经收到了事务的SCN。

步骤8:本地节点的LGWR进程通知用户进程事务提交结束。


步骤2和步骤3是同时发生的,目的是为了提高SCN的传播效率

步骤5和步骤6的发生顺序可能是相反的,取决于集群私网和重做日志文件所在磁盘的I/O性能


直接方式需要经历7个步骤

步骤1:用户进程提交事务,并通知LGWR进程,之后进入等待状态,对应的等待事件是log file sync。

步骤2:LGWR进程直接将包含了事务提交SCN的信息发送给所有远程节点的LMS进程

步骤3:LGWR进程将事务对应的重新信息写入重做日志文件。

步骤4:所有远程节点的LMS进程接收到了SCN信息并反馈给本地节点的LMS进程

步骤5:重新信息的I/O请求完成,并反馈给LGWR进程。

步骤6:本地节点的LMS进程通知LGWR,所有远程节点都已经收到了事务的SCN。

步骤7:本地节点的LGWR进程通知用户进程事务提交结束。


直接方式比间接方式少了一个步骤,由LGWR根据系统负载自行决定使用哪种SCN的传播方式。



猜你喜欢

转载自blog.51cto.com/13598811/2141012