zoukankan      html  css  js  c++  java
  • Oracle重做日志REDO

     什么是重做?

    • 重做日志包含所有数据产生的历史改变记录.
    • 重做日志目的是保证数据的安全,如果数据因特殊原因没有写到磁盘上,可以通过重做日志来恢复.
    • 重做日志文件通常用于
      • 恢复(实例恢复和介质恢复)
      • 日志挖掘:可以通过oracle工具分析日志里面的内容
      • 流:通过分析redo,从redo获取实时数据,应用到远程数据库.

     

    • 数据库产生的每个改动:
      • 写入数据库缓存之前,先写入重做日志--内存
      • 写入数据文件之前先写入日志文件 ----数据文件

     

     

    • 内存里操作,重做日志的内存区叫Redo buffer
    • 当提交后,日志缓冲被刷入重做文件里.还有其他触发条件.

    redo有2种

    • undo产生的redo
    • 数据块本身产生的redo

     

     

    REDO写入过程

    轮询

     

    从上到下写,第一个写完后就写第二个,第二个写完后就写第三个,第三个写满后就写第一个.如果第一个还没有写入到磁盘,此时会报错,不允许覆盖.

     

    REDO-- 日志组

     

    DISK A DISK B

     

    GROUP1里面有2redo log,作用是冗余.

     

    LGWR同时写入一个组的log文件中..

     

     

    REDO 和归档

     

    LGWR写第一个组,第一个组写完后,就会写第二个组,然后ARCH会将第一个组归档成一个归档文件.

     

     

    REDO 的内容 ---改变向量

    redo的内容并不是sql语句,他是放的一些改变,叫改变向量.

     

    数据库恢复的时候并不是执行sql语句,而是一个物理的过程,是一个数据块的覆盖.是改变数据块的大小.

     

     

     

    创建2个表

    SQL> create table t1(x char(1));

     

    SQL> create table t2(x char(2000));

     

    获取当前会话的sid

     

    SQL> select distinct sid from v$mystat;

     

    开三个会话

    SQL> select a.sid,b.name,a.value from v$sesstat a,v$statname b where a.statistic#=b.statistic# and b.name='redo size' and sid in(475,241);

    1中字符长度为1,表2长度为2000,所以他产生的redo更多一些.

    所以redo里面保存的不是sql语句,也不是插入的数据值,只是和数据块改变的大小/多少有关系.

     

    SQL> create table t1(x char(1));

     

     

     

    Table created.

     

     

     

    SQL> create table t2(x char(2000));

     

     

     

    Table created.

     

     

     

    SQL> select distinct sid from v$mystat;

     

     

     

           SID

     

    ----------

     

           475

     

     

     

    SQL> select a.sid,b.name,a.value from v$sesstat a,v$statname b where a.statistic#=b.statistic# and b.name='redo size' and sid in(475,241);

     

     

     

           SID NAME

     

    ---------- ----------------------------------------------------------------

     

         VALUE

     

    ----------

     

           241 redo size

     

             0

     

     

     

           475 redo size

     

         27280

     

    SQL> col name for a10;

     

    SQL> select a.sid,b.name,a.value from v$sesstat a,v$statname b where a.statistic#=b.statistic# and b.name='redo size' and sid in(475,241);

     

     

     

           SID NAME            VALUE

     

    ---------- ---------- ----------

     

           241 redo size           0

     

           475 redo size       27280

     

     

     

    这两个会哈的redo size不一样大,我们quit退出,重新进一下

     

    SQL> select a.sid,b.name,a.value from v$sesstat a,v$statname b where a.statistic#=b.statistic# and b.name='redo size' and sid in(475,241);

     

     

     

           SID NAME            VALUE

     

    ---------- ---------- ----------

     

           241 redo size           0

     

           475 redo size           0

     

    同时向2张表插入数据

     

     

     

     

     

     

     

    SQL> select a.sid,b.name,a.value from v$sesstat a,v$statname b where a.statistic#=b.statistic# and b.name='redo size' and sid in(475,241);

     

     

     

           SID NAME            VALUE

     

    ---------- ---------- ----------

     

           241 redo size        2668

     

           475 redo size         672

     

     

     

     

    REDO --undo redo

     

     

     

  • 相关阅读:
    Linux:打印(输出)所有的列(awk, $0)
    Linux:批量修改分隔符(awk、BEGIN、FS、OFS、print、tr命令)
    vcf格式文件转化为Excel(csv)格式文件(R语言的write.csv,write.table功能,Excel表的文件导入功能)
    Linux追加文件内容并在内容前加上该文件名(awk, FILENAME功能妙用)
    斯坦福大学公开课机器学习:监督学习在行人检测的应用(supervised learning for pedestrian detection)
    斯坦福大学公开课机器学习:梯度下降运算的学习率a(gradient descent in practice 2:learning rate alpha)
    斯坦福大学公开课机器学习:梯度下降运算的特征缩放(gradient descent in practice 1:feature scaling)
    解决invalid record found in VCF4 file (at least 8 tab-delimited fields expected)问题,批量修改空格改为制表格格式
    vcf文件(call variants得来的)怎么看变异是纯合还是杂合的
    剑指offer四十八之不用加减乘除做加法
  • 原文地址:https://www.cnblogs.com/thescentedpath/p/redo.html
Copyright © 2011-2022 走看看