SCN、checkpoint、redo log
来源:互联网 发布:孙策玉玺换兵马 知乎 编辑:程序博客网 时间:2024/05/01 07:05
LGWR触发条件:
1. 用户提交
2. 有 1/3 重做日志缓冲区未被写入磁盘
3. 有大于 1M 的重做日志缓冲区未被写入磁盘
4. 3秒超时
5. DBWR 需要写入的数据的 SCN 大于 LGWR 记录的 SCN,DBWR 触发LGWR 写入。
说明:
1、即使用户未commit,被修改的数据文件对于的redo日志依然可能会被写入redo log文件中,从而导致前滚后需要进行回滚。
2、当数据文件要下盘,即DBWR刷盘时,如果被修改数据对应的日志文件还未下盘,则DBWR触发LGWR把redo buffer中的数据写到redo log文件中(即使该数据未commit),保证被修改的数据下盘前,其对应的redo buffer中的日志已被写到redo log文件中。
触发DBWR 进程的条件有:
1. DBWR 超时,大约 3秒
2. 系统中没有多余的空缓冲区来存放数据
3. CKPT 进程触发 DBWR
checkpoint 有两个目的:
1、确保数据一致性。
2、使数据库能快速地恢复。
Checkpoint期间会有下面进程发生:
1. DBWR 写所有脏数据到数据文件;
2. CKPT 更新控制文件和数据文件的SCN。
注意:
1. alter system switch logfile 也将触发完全检查点的发生。
2. alter database datafile ... offline 不会触发检查点进程。
如果是单纯的 offline datafile,那么将不会触发文件检查点,只有针对 offline tablespace的时候才会触发文件检查点。
检查点等待事件:
日志切换必须等待检查点完成,而检查点在等待DBWn 完成。
redo log switch时,不能立即switch到active状态的redo log文件(即redo log文件循环复用,发生覆盖),log group必须等待该active状态的redo log对应的变化数据被DBWR下盘后,才能被覆盖。
active表示该log group还没有完成归档(归档模式下)或者该log group有进行instance recovery的需要用到的日志。所以当checkpoint 发生时,如果 dbwr还没有写完它对应的dirty buffers(该 checkpoint 时间点以前产生的 dirty buffers, 靠scn 判断),则该 log group 处于 active 状态,不会进行日志切换,当然也不会发生日志文件被覆盖的问题。
其实检查点发生后,就是 lgwr 和 dbwr 写 buffer 到磁盘文件的过程, dbwr写data buffer到data file是一个随机存储的过程,较慢;Lgwr 写redo buffer 到 redo file 文件是顺序写的过程,较快,这就产生了一个等待问题。 即当lgwr 轮循一圈后,要进行日志切换,覆盖 redo log file,但是此时dbwr还没有写完,那么lgwr就会出现等待,oracle也会hang在那里,同时 alter文件中会提示一个相应的提示checkpoint not complete。等检查点完成后数据库自动恢复正常。
因此,最好建立多组redo file文件,并且,redo file设置较大,避免lgwr循环一圈后,check point过程中出现等待事件。
SCN查询:
select checkpoint_change# from v$database; system scn
select name,checkpoint_change#, last_change# from v$datafile; datafile scn和stop SCN
select name,checkpoint_change# from v$datafile_header ; start scn
- SCN、checkpoint、redo log
- SCN、Redo和Checkpoint
- Redo Log 和Checkpoint not complete
- Redo Log 和Checkpoint not complete
- Redo Log 和Checkpoint not complete
- Redo Log 和Checkpoint not complete
- Redo Log 和Checkpoint not complete
- Redo Log 和Checkpoint not complete
- SCN&CHECKPOINT
- SCN&&CHECKPOINT
- redo log 在线扩容 解决:log file switch (checkpoint incomplete)
- SCN、CHECKPOINT、RECOVERY
- scn 和 checkpoint
- scn 和 checkpoint
- SCN and checkpoint
- REDOLOG CHECKPOINT 与SCN
- SCN and Checkpoint
- oracle redo checkpoint
- 从小程序开始;仿造软件;解决自己的问题
- 应用程序无法正常启动 0x0000007b
- wince7.0开发环境搭建
- 清除jsp页面缓存
- Android 使用Zxing2.1 来读取二维码
- SCN、checkpoint、redo log
- hdu 1879 继续畅通工程
- 代码规范
- HibernateTemplate和HibernateDaoSupport
- 在C++ Builder6中使用XML
- linux sysfs(6)
- android导出jar出现的问题
- VS2010实战:创建并共享项目/项模板
- 模态对话框