Oracle online redo log 基础知识

php中文网
发布: 2016-06-07 17:26:25
原创
1132人浏览过

Oracle 的日志分为:ONLINE REDO LOG 和 archived log

oracle 的日志分为:online redo log 和 archived log

online redo log:
一个数据库至少要有2组 redo log,每组 redo log 至少要有一个 member(出于安全考虑,建议每组 redo log 至少有 2 个多元化的 redo log member)
redo log 循环使用,当一组日志写满后,就会切换到下一组日志。在非归档模式下,当所有日志组写满后,就会覆写之前写满且状态为 inactive 的日志组,以达到循环使用的目的。
在归档模式下,当所有日志组写满后,,LGWR 要等到所有日志都已归档,且日志中记录的事务数据全部写入磁盘(inactive)后才会覆写之前的日志组,否则会一直等待这些任务完成。

日志内容:
redo log 的 redo entry 由一组变更向量组成。

变更向量(change vector):数据本身的改变、对应的 undo 改变、undo segment 的改变

示例:要修改某张表中的某个字段的值,那么修改之前的字段值就会放在 undo 中,为了申请该事务,还需要修改 undo segment 段头中事务表的信息,这个过程的描述就是
redo log 的变更向量。

变更向量的信息包括:版本号、事务操作代码、发生变更的数据块地址。在建立变更向量时,会从数据块中复制版本号。在恢复期间,Oracle 会读取向量并将修改应用于对应的数据块。
同时对数据块的版本号加 1.

Redo Thread 日志线程

无涯·问知
无涯·问知

无涯·问知,是一款基于星环大模型底座,结合个人知识库、企业知识库、法律法规、财经等多种知识源的企业级垂直领域问答产品

无涯·问知 40
查看详情 无涯·问知

单实例:一个 redo thread
RAC:实例数和redo thread 数量 1:1,每个实例都有自己的 thread
引入 redo thread 就是为了避免多个实例之间共享 redo log file 而导致争用,从而提高数据库性能。

一般而言,thread number=instance number
在 RAC 环境下,添加日志要指定线程:
ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 5
('+DATA1/oradata/redo06.log','+DATA1/oradata/redo06.log') size 10m;

ALTER DATABASE ADD LOGFILE MEMBER
'...........' TO GROUP 5;

每个 REDO THREAD 或者(instance)至少需要两组日志,这些日志循环使用。当一组日志写满后,会发生 log switch 事件而使用下一组日志。如果数据库处于归档模式,
该归档日志还要被归档。在LOG SWITCH 时,会触发增量 checkpoint,启动 DBWR 后台进程将该日志中记录的所有操作所涉及的 dirty block 从 data buffer 写入磁盘文件。
一旦checkpoint 完成,这个日志组便可以被覆写重用。

linux

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号