ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 块清除的原因

块清除的原因

原创 Linux操作系统 作者:279531451 时间:2009-10-19 22:05:08 0 删除 编辑
 Oracle在Commit是清除块头部的事务信息,如果不清除,Oracle在下次继续检查块这些块,如果做select操作,oracle将读一致性,将扫描块头信息,从而产生重做日志。下面简单演示select操作产生重做日志:

SQL> create table a2 (x char(2000) default 'x',y char(2000) default 'y' , z char(2000) default 'z');

 

表已创建。

SQL> insert into a2 select 'x','y','z' from all_objects where rownum <500;

 

已创建499行。

 

SQL> commit;

 

提交完成。

这是每块一行的数据(8k的数据库)

现在测试select操作产生的重做

 

SQL> select * from redo_size;

 

     VALUE

----------

   3296948

 

SQL> select * from a2  where x=y;

 

未选定行

 

SQL> select * from redo_size;

 

     VALUE

----------

   3297124

 

SQL> select 3297124 - 3296948  from dual;

 

3297124-3296948

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

    176 

看到产生了176字节的重做,这代表了完全扫描A2表期间修改的块头,所产生的重做日志,那么在某一刻,DBWR将把这些修改过的块再次写入硬盘中。现在,我们再次运行本次查询

 

SQL> select * from redo_size;

 

     VALUE

----------

   3297124

 

SQL> select * from a2 where x=y;

 

未选定行

 

SQL> select * from redo_size;

 

     VALUE

----------

   3297124

 

SQL>

 

会看到没有产生redo信息。块全部是干净的

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

请登录后发表评论 登录
全部评论

注册时间:2009-09-01

  • 博文量
    100
  • 访问量
    182885