Oracle 等待事件 WCR: replay lock order 官方解释,作用,如何使用及优化方法
本站中文解释
Oracle事件WCR: replay lock order是在使用日志重放复制的情况下出现的一个问题。当应用程序提交事务之后,Oracle将日志记录在数据库管理系统(DBMS)缓冲池内,等待日志写入操作完成后,才会发送确认信息到应用程序。提交事务时,在DBMS缓冲池内锁定所有日志,这是从获取锁定到放行锁定的顺序决定的,是一个称为“锁定非递归重放”的重要组成部分,它确保生成的日志重放时,每个事务都能被正确、可靠地复制。
当发生日志重放复制的情况下,如果重放的时候发生了“WCR: replay lock order”事件,就意味着DBMS缓冲池内锁定的日志是不同于原来当应用程序提交事务时锁定的顺序,例如,应用程序当中A事务先于B事务提交,但是日志重放复制的时候却是B事务优先被复制,这样就可能会影响事务之间的依赖关系,从而引发数据一致性问题。
因此,为了防止“WCR: replay lock order”事件发生,首先要尽量避免事务之间的冲突,其次San Francisco Oracle Structured Query Language (SF Oracle SQL) 要有充分的封锁管理,确保事务只在解决冲突之后才能继续提交,最后在改进资源的分配,让各种应用程序有足够的资源来处理日志记录,从而防止“WCR: replay lock order”事件的发生。
官方英文解释
A session will wait on this event during replay if it saw some lock contention during capture.
Wait Time: Depends upon the amount of row lock contention in the original capture
Parameter | Description |
---|---|
wait for scn’s hi 4 bytes |
High 4 bytes of the 8-byte replay SCN that the session is waiting on |
wait for scn’s lo 4 bytes |
Low 4 bytes of the 8-byte replay SCN that the session is waiting on |