redo、dirty data、commit、checkpoint理解

来源:互联网 发布:南京鸿鸣网络科技知乎 编辑:程序博客网 时间:2024/06/02 21:28

redo到底是什么东西;重做

是对数据库修改的一个描述信息;

比如修改了一个数据块;在redo中会记录什么时间,修改了第几个文件的哪个数据块,修改了什么东西。就是一条特定格式的记录。注意:不是记录SQL语句。


什么是脏数据块啊?内存中的数据和文件中的数据不一致的。

commit会不会触发DBWriter?不会;

dbwriter是一个很底层的进程,由oracle自己决定什么时候启用。

commit会不会触发logwriter?会。只要commit肯定会刷新logwriter,会把redo logbuffer中的数据写到redo log files

commit会不会唤醒ckpt?不会。

chkpt:要么发生日志切换,要么超过3秒,要么shutdownnormal,要么alter system checkpoint



.checkpoint由ckpt进程触发oracle进行checkpoint动作,将data buffer中的脏块(已经写在redo里记录但是没有写到datafile里的)的内容写入到data file里并释放站用的空间,由dbw后台进程完成,并修改controlfile和datafile的scn.

一般手工执行是由于要删除某个日志但是该日志里还有没有同步到datafile里的内容,就需要手工check point来同步数据,然后就可以drop logfile group n.

 

checkpoint主要是用于去刷新data buffer中脏数据到数据文件中的。通过checkpoint来控制脏数据队列的长度,从而来缩小下一次启动数据库所花费的时间。