`
itspace
  • 浏览: 979063 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Oracle 事务一致性之块清理(block cleanout)

阅读更多
block cleanout原理方面不做过多解释,主要记录测试过程,备忘。
对测试表格做dml操作,记录其scn值
SQL> update zhoul set name='aaa';

3 rows updated.

SQL> commit;

Commit complete.

SQL> alter system checkpoint;

System altered.

SQL> select current_scn scn from v$database;

               SCN
------------------
    10995251665103

SQL> update zhoul set name='bbb';

3 rows updated.

SQL> commit;

Commit complete.

SQL>  alter system checkpoint;

System altered.

SQL> select current_scn scn from v$database;

               SCN
------------------
    10995251665322
   



SQL> select * from zhoul;

         I NAME
---------- --------------------
         1 bbb
         2 bbb
         3 bbb

dump datafile block可以看出其block所有行都处于提交状态。       
        
  Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0023.02f.0000004e  0x0280073e.0010.2b  --U-    3  fsc 0x0000.0811d995
0x02   0x0029.02d.0000004d  0x028008c5.0010.37  C---    0  scn 0x0a00.0811d8b7

物理上修改block,修改flag表示,此block有事务存在,锁住的行数为2行。
BBED> modify 0x0200


BBED> dump offset 88
File: /oradata/mcstar/zhoul01.dbf (0)
Block: 15511            Offsets:   88 to  599           Dba:0x00000000
------------------------------------------------------------------------
b7d81108 00000000 00000000 00010300 ffff1800 001f621f 621f0000 0300141f
0a1f001f 311fff1e cb1e5c1e 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

<32 bytes per line>

修改此事务槽的ckpt值为A000811D8CF
BBED> modify 0xcf
File: /oradata/mcstar/zhoul01.dbf (0)
Block: 15511            Offsets:   88 to  599           Dba:0x00000000
------------------------------------------------------------------------
cfd81108 00000000 00000000 00010300 ffff1800 001f621f 621f0000 0300141f
0a1f001f 311fff1e cb1e5c1e 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

<32 bytes per line>

BBED> sum apply
Check value for File 0, Block 15511:
current = 0x3274, required = 0x3274
再次执行表格查询,可看到值保持不变。
SQL> select * from zhoul;

         I NAME
---------- --------------------
         1 bbb
         2 bbb
         3 bbb

dump block可以看出Oracle已进行块清理
seg/obj: 0x21636  csc: 0xa00.814c121  itc: 2  flg: E  typ: 1 - DATA
     brn: 0  bdba: 0x1c03c91 ver: 0x01 opc: 0
     inc: 0  exflg: 0

Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0023.02f.0000004e  0x0280073e.0010.2b  C---    0  scn 0x0a00.0811d995
0x02   0x0029.02d.0000004d  0x028008c5.0010.37  C-U-    0  scn 0x0a00.08144534    
物理上也已做了修改
BBED> dump block 15511 offset 84 count 8 
File: /oradata/mcstar/zhoul01.dbf (0)
Block: 15511            Offsets:   84 to   91           Dba:0x00000000
------------------------------------------------------------------------
00a0000a 34451408

分享到:
评论

相关推荐

    oracle ITL事务槽

    块清除(Cleanout)是Oracle锁机制的一部分,它移除与事务锁定相关的信息,以优化数据块的使用和提高并发性能。 总的来说,Oracle的ITL事务槽是其并发控制和事务管理的核心机制之一。它有效地跟踪和管理事务状态,...

    Oracle中关于事务槽(ITL)

    总的来说,Oracle的事务槽(ITL)机制是其并发控制和事务管理的核心组成部分,它有效地平衡了并发性能和数据一致性,确保了数据库的高效稳定运行。通过合理的事务槽管理和优化,可以避免ITL争用,提高系统的并发处理...

    oracle_redo_undo

    Oracle 中的 redo 和 undo 机制是数据库的核心组件,它们一起协作以确保数据库的事务一致性和可靠性。在本文中,我们将深入探讨 redo 和 undo 机制的工作原理和协作机制。 Undo Mechanism Undo 机制是 Oracle 中的...

    定时清理tomcat日志脚本cleanOUT.sh

    定时清理tomcat日志脚本 cleanOUT.sh 每天清理按照每天切割清理,不会用留言,包教会,

    MVCC-(Oracle-Innodb-Postgres)PPT课件.pptx

    3. 可见性判断:Oracle的可见性判断是基于CR Block(一致读)的SCN小于查询SCN。 4. 数据块结构:Oracle的数据块结构包括fixed部分和variable部分。Fixed部分包括rdba、scn和seq,variable部分包括ITLs(Interested ...

    Oracle Core Essential Internals for DBAs and Developers ■ ■

    Delayed Block Cleanout .......................................................................................................................... 48 Transaction Table Rollback ...........................

Global site tag (gtag.js) - Google Analytics