ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 在怎样的条件下,select操作会生成redo信息

在怎样的条件下,select操作会生成redo信息

原创 Linux操作系统 作者:wei-xh 时间:2010-05-08 14:40:54 0 删除 编辑
当存在延迟块清除的时候:
由于数据块上存储了ITL事务槽信息与锁定位信息,因此在事务提交后,需要清除。清除的内容主要为在TIL事务槽里记录事务提交标志与提交SCN,清除记录的锁定位信息。
但是ORACLE有一个规则,如果修改的数据块接近BUFFER CACHE的约10%,或者数据块已经不在BUFFER CACHE里了,那么会进行延迟块清除,清除的这个过程也会导致数据块的变化,因此会记录日志。
下面我演示下,数据块已经不在BUFFER CACHE里的情况:
SQL> conn scott/tiger
已连接。
SQL>
SQL> spool d:\\ss.txt
SQL> create table pp as select * from dba_objects;

表已创建。


SQL> insert into pp select * from pp;

已创建49844行。

SQL> /

已创建99688行。

SQL> /

已创建199376行。

SQL> /

已创建398752行。

SQL> /

已创建797504行。

SQL> alter system flush buffer_cache;

系统已更改。

SQL> commit;

提交完成。

SQL> set autotrace trace stat
SQL> select /*+ full(pp) */count(*) from pp;

统计信息
----------------------------------------------------------
          6  recursive calls
          1  db block gets
      43137  consistent gets
      21903  physical reads
    1523104  redo size
        411  bytes sent via SQL*Net to client
        385  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed

从实验可以看出,由于刷新了BUFFER CACHE,导致数据块都不在BUFFER CACHE里了,那么提交的时候就不会去做块清除,等待下一次操作此数据块的时候才进行延迟块清除,此清除会产生日志。这个实验中产生了1523104byte的日志。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22034023/viewspace-662245/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle ACE组成员,DBGeeK用户组发起人。曾在DTCC、ORACLE技术嘉年华、Gdevops等公开场合做过数据库技术专题分享,2017年应Oracle邀请在世界最大的数据库会议OOW上做技术分享。组织翻译了《拨云见日,解密Oracle ASM内核》一书。

注册时间:2009-07-04

  • 博文量
    422
  • 访问量
    2425322