Oracle online redo log 扫盲

标签: oracle online redo | 发表时间:2013-02-08 18:22 | 作者:xiangsir
出处:http://blog.csdn.net
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 日志线程


单实例:一个 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 完成,这个日志组便可以被覆写重用。

作者:xiangsir 发表于2013-2-8 18:22:24 原文链接
阅读:94 评论:0 查看评论

相关 [oracle online redo] 推荐:

Oracle online redo log 扫盲

- - CSDN博客数据库推荐文章
Oracle 的日志分为:ONLINE REDO LOG 和 archived log. 一个数据库至少要有2组 redo log,每组 redo log 至少要有一个 member(出于安全考虑,建议每组 redo log 至少有 2 个多元化的 redo log member). redo log 循环使用,当一组日志写满后,就会切换到下一组日志.

REDO管理

- - CSDN博客数据库推荐文章
一、什么是REDO LOG.  REDOLOG文件是十分重要的文件,它记录了Oracle的所有变化,是数据库实例恢复机制中最为关键的组成部分.     GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME     NEXT_CHANGE# NEXT_TIME.

mysql 5.6 online ddl 测试

- - CSDN博客数据库推荐文章
     在生产环境中,因为业务需求,改动mysql表结构,特别是数据量特别大的时候,几百万甚至几千万的数据,mysql online ddl操作非常让mysql dba揪心. 5.6版本支持online ddl.    为什么mysql ddl操作让dba揪心呢. 因为mysql ddl操作内部原理是这样的:.

Redo write触发的四种情况

- - CSDN博客推荐文章
1、当LGWR空闲的时候,会每隔3秒检查一次是否有从redo buffer写入redelog中的数据,如果有,一个后台进程就会自动的执行将其写入. 2、当有进程要从redo buffer中分配空间时,会先计算redo buffer中已经占用的空间,如果该空间大于_log_io_size这个参数值,并且此时的LGWR处于空闲状态,便会被激活执行后台写.

Ubuntu 11.10 Online Release Party(非官方)

- tackwell - 笨兔兔
各位同学及众Ubuntu、Linux 爱好者们:. 兔兔在此首先向各位支持笨兔兔博客的同学表示谢意. 如果没有你们的支持,笨兔兔博客不可能有如此活跃. 兔兔也就不可能有这样的信心和勇气坚持这么久. 一个好的博客,不是个人的,应是众人共同的关注. 笨兔兔博客自建立起,就是为了实现兔兔的一个简单的梦想:致力服务于众同学的Ubuntu和Linux学习交流,做Ubuntu和Linux宣传推广的平台.

index rebuild和rebuild online的区别

- - CSDN博客数据库推荐文章
       曾经看到过淘宝的这个面试题:在一个24*7的应用上,需要把一个访问量很大的1000万以上数据级别的表的普通索引(a,b)修改成唯一约束(a,b,c),你一般会选择怎么做,请说出具体的操作步骤与语句.        先online建索引添加约束,然后删除原理的索引.        为什么要用online呢.

[原]online db如何做字段扩充

- - yangfei的私房菜
声明:部分内容来自网络收集.     线上User表目前存在四个字段user(uid, name, passwd, nick),现在需要增加两个字段age, sex,变为user(uid, name, passwd, nick, age, sex).     目前user表数据量较大,且并发请求量较大.

redo log大量生成的诊断处理流程

- - CSDN博客推荐文章
redo log大量生成的诊断处理流程. 本文是原创文章,转载请注明出处:. 1.获得归档日志暴增时段的一个归档日志:可以查询v$archived_log视图,结合completion_time列进行定位. 2.对该归档日志进行转储dump.    --请将路径修改成当时的redo归档的路径.   以上命令会在user_dump_dest中生成一个trace文件,请将该trace文件传到linux中(root用户or oracle用户均可).

如何定位那些SQL产生了大量的redo日志

- - ImportNew
在ORACLE数据库的管理、维护过程中,偶尔会遇到归档日志暴增的情况,也就是说一些SQL语句产生了大量的redo log,那么如何跟踪、定位哪些SQL语句生成了大量的redo log日志呢. 下面这篇文章结合实际案例和官方文档“How to identify the causes of High Redo Generation (文档 ID 2265722.1)”来实验验证一下.

必须了解的MySQL三大日志:binlog、redo log和undo log

- - DockOne.io
日志是 MySQL数据库的重要组成部分,记录着数据库运行期间各种状态信息. MySQL日志主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类. 作为开发,我们重点需要关注的是二进制日志( binlog)和事务日志(包括 redo log和 undo log),本文接下来会详细介绍这三种日志.