Erp100论坛's Archiver

xiangzhao 发表于 2008-7-3 17:25

重做日志缓冲区都记录什么

我觉得记录的有:
假如原先表a中的记录为1,然后我修改这条记录为2时,它会把之前为1的这个记录的相关的信息记录到重做缓冲区中,当执行commit的时候把重做日志缓冲区的内容写到在线重做日志中,我想请问,重做缓冲区记录这条记录改为2的这些操作吗,也就是说假如我把记录修改为2,执行完commit以后,突然掉电,这时再启动数据库,数据库会重放事务,那是把表a的记录重写为1,还是一直就是2。

xiangzhao 发表于 2008-7-3 17:25

日志缓冲区既会记录1也记录2,断电之后的记录是2,因为记录到日志中的,下次启动数据库的时候会做前滚

xiangzhao 发表于 2008-7-3 17:25

执行完commit, 表示redo buffer中的记录被记录到redo log. 所以掉电了还是可以回滚得.

还有我觉得1被update成2 后,  不应该写在redo buffer中, 而应该记录在回滚段中.

xiangzhao 发表于 2008-7-3 17:26

以前的信息(COMMIT之前)是记录在RBS( ROLLBACK SEGMENT) 中.
以后的信息(COMMIT之后)记录在redo log, 之后会在ARCHIVE LOG 中记录

xiangzhao 发表于 2008-7-3 17:26

对于数据库内所有被更改的数据块Oracle会把所有更改内容清楚记录在REDO日志缓冲中。 所谓所有更改内容,当然包括数据段,还有索引段和回滚段。数据库内任意数据块所发生的一个更改,会被写成一个变更向量。 有些事务会产生不止一个重做记录, 每个重做记录里都包含了一连串的变更向量。

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.