重做日志是否存储应用于数据库缓冲区缓存的所有更改?

Does redo logs store all the changes applied to database buffer cache?

我知道重做日志条目是在 insert/update/delete/create/drop/alter 发生时创建的。哪些信息存储在重做日志中?在实例失败的情况下,重做日志文件用于恢复数据库,它是否包含有关应用数据库缓冲区缓存的更改信息?

如果进行重做日志挖掘(以准确查看重做日志中的内容),有一个视图可以告诉您它们存储的内容:V$LOGMNR_CONTENTS.

这通常显示:

- Operation: INSERT, UPDATE, DELETE, or DDL
- SCN - system change number - very important for recovery
- The transaction to which a change belongs
- The table and schema name of the modified object
- The name of the user who issued the DDL or DML
- the SQL needed to redo and/or undo your changes.

所以是的,重做日志包含提交脏缓冲区时所做的更改。它们用于在发生故障时重建数据库。它们还保护回滚数据,因为重做和撤消的 SQL 都被存储并在恢复期间回放。

V$LOG 和 V$LOGFILE 显示重做数据文件是如何分配的。您通常希望它们成对出现,因为您有备份以防万一丢失。您还希望至少有 3 个组(对),因为有些是活动的,有些是最新的,有些正在写入存档日志,这对恢复也很重要。