gpt4 book ai didi

oracle - OCP : Which two are true about LGWR?

转载 作者:行者123 更新时间:2023-12-02 00:57:46 25 4
gpt4 key购买 nike

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

答案是DE。

但是为什么?

为什么 A 和 F 是错误的?

最佳答案

Why A and F is wrong?

这不是很明显,但是 Oracle 概念指南确实有解释。你应该check it out.

无论如何....

A. LGWR always writes to the redo logs each time a COMMIT occurs.

用户提交事务是触发 LGWR 写入重做日志的事情之一。所以看起来 A 是正确的。但是概念指南说:“当事件很高时,LGWR 可以使用组提交”。如果多个用户在 LGWR 仍在写入重做日志时提交了他们的事务,那么这些提交将保存在重做缓冲区中,然后在 LGWR 释放时全部写入。

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

F. LGWR always writes to the redo logs when DBWR writes a dirty buffer.

概念指南说:“在 DBW 可以写入脏缓冲区之前,数据库必须将与缓冲区更改相关联的重做记录写入磁盘(预写协议(protocol))。如果 DBW 发现某些重做记录还没有写入,它通知 LGWR 将记录写入磁盘,并在将数据缓冲区写入磁盘之前等待 LGWR 完成。"

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

关于oracle - OCP : Which two are true about LGWR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53126971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com