OCP:关于LGWR,哪两个是真的


  • A。每次COMMIT发生时,LGWR总是写入重做日志
  • B。每次发生ROLLBACK时,LGWR总是写入重做日志
  • C。LGWR从不向重做日志写入一个COMMIT
  • D。当DBWR写入脏缓冲区时,LGWR可能会写入重做日志
  • E。LGWR可以在同一写入请求中写入多个COMMIT
  • F。当DBWR写入脏缓冲区时,LGWR总是写入重做日志

答案是DE。

但为什么呢?

为什么A和F是错的?

为什么A和F是错误的?

这并不明显,但《Oracle概念》指南中确实有解释。你应该去看看。

不管怎样。。。。

A。每次COMMIT发生时,LGWR总是写入重做日志。

用户提交事务是触发LGWR写入重做日志的因素之一。看来A是正确的。但《概念指南》说:"当活动量很大时,LGWR可以使用组提交"。如果几个用户在LGWR仍在向重做日志写入时提交了他们的事务,那么这些提交将保存在重做缓冲区中,然后在LGWR释放时写入所有提交。

因此,并不是每个提交都有一个写入。这就是为什么E是正确的。

F。当DBWR写入脏缓冲区时,LGWR总是写入重做日志。

概念指南说:"在DBW写入脏缓冲区之前,数据库必须将与缓冲区更改相关的重做记录写入磁盘(预写协议(。如果DBW发现一些重做记录尚未写入,它会向LGWR发出信号,将记录写入磁盘,并等待LGWR完成后再将数据缓冲区写入磁盘。">

所以F不是真的,因为当DBWR写入时,LGWR并不总是必须写入,只是有时。这就是为什么D是正确的。

相关内容

最新更新