答案是DE。
但为什么?
为什么A和F是错误的?
最佳答案
为什么A和F是错误的?
这并不明显,但是《 Oracle概念指南》确实有解释。你应该check it out.
无论如何....
答:LGWR总是在每次COMMIT发生时写入重做日志。
用户提交事务是触发LGWR写入重做日志的事情之一。因此,似乎A是正确的。但是概念指南说:“ Activity 频繁时,LGWR可以使用组提交”。如果在LGWR仍在写入重做日志时有几个用户提交了他们的事务,则这些提交将保留在重做缓冲区中,然后在LGWR释放时将所有这些提交都写入。
因此,每次提交都没有一个写操作。这就是为什么E是正确的。
F.当DBWR写入脏缓冲区时,LGWR总是写入重做日志。
概念指南说:“在DBW可以写入脏缓冲区之前,数据库必须将与更改缓冲区有关的重做记录(预先写协议(protocol))写入磁盘。如果DBW发现某些重做记录尚未写入,则它通知LGWR将记录写入磁盘,并等待LGWR完成,然后再将数据缓冲区写入磁盘。”
所以F是不正确的,因为在DBWR写入时,LGWR不一定总是必须写入,只是有时。这就是为什么D是正确的。