Redo & Undo

1. Defination:

Redo: 对于每次操作,系统在数据真正被更改之前先将相关操作写入重做日志。因此,若更改数据的过程中发生意外,系统可继续根据日志中的记录来完成数据更改操作。

Undo: 对于每次操作,系统在数据真正被更改之前先将原状态保存进撤消日志中。因此,若更改数据的过程中发生意外,系统可继续根据日志中的记录来将数据恢复到前一个状态。


2. recovery & rollback

redo->记录所有操作,用于恢复(redo records all the database transaction used for recovery)

undo->记录所有的前印象,用于回滚(undo is used to store uncommited data infor used for rollback)


3. 回滚段中的数据类型:

回滚段中的数据主要分为以下三种:

1).Uncommitted undo information; 未提交的回滚数据,该数据所关联的事务并未提交,用于实现读一致性,所以该数据不能被其它事务的数据所覆盖

2).Committed undo information;已经提交但未过期的回滚数据,该数据关联的事务已经提交,但是仍受到undo retention参数保持时间的影响

3).Expired undo information;事务已经提交,而且数据保存时间已经超过undo retention参数指定的时间,属于已经过期的数据

当回滚段满了后,会优先覆盖Expired undo information,当过期数据空间用完后,会再覆盖Committed undo information的区域,这时undo retention参数所规定的保持时间会被破坏,Uncommitted undo information的数据是不允许覆盖的,如果要求提交的数据在undo retention参数规定的时间内不会被覆盖,可以在undo表空间上指定RETENTION GUARANTEE,语法如下:

ALTER TABLESPACE UNDOTBS1 RETENTION GUARANTEE;


4. undo数据与redo数据的区别:

1). undo记录数据修改之前的操作,redo记录磁盘数据将要进行的操作.

2). undo用于数据的回滚操作,和实现一致性读,redo用于前滚数据库操作

3). undo存储在回滚段里,redo存储在重做日志文件里

4). undo用于在多用户并发的系统里保证一致性读,redo用于防止数据丢失


你可能感兴趣的:(database,redo,undo)