设为首页 收藏本站
查看: 1229|回复: 0

[经验分享] oracle 块延迟清除(delayed block cleanout)

[复制链接]

尚未签到

发表于 2016-7-29 11:11:44 | 显示全部楼层 |阅读模式
为了保证事务的回退和满足多用户的CRoracle引入了undo机制,由于undo是循环使用的,在一个事务完成过程中,它与redo相互配合,其中undo在一次事务中需要完成以下工作:
(1)    Transaction开始前回滚段获取一个ITL(事务槽),分配空间,记录事务信息
(2)    Transaction提交后,redo完成记录,同时还清除回滚段的事务信息包括行级锁,ITL信息(commit标志,SCN)
清除这些事务段的信息的过程就叫做块清除,在完成块清除时,我们本事务修改的数据块就会存在两种可能(1)所有的数据块还保存在buffer cache中,(2)部分数据块或者是全部数据块由于LRU管理已经被刷出了buffer cacheoracle为了考虑到块清除的成本,以及性能,会作以下两种方式的块清除处理:
(1)      快速块清除(fast blockcleanout), 当事务修改的数据库全部保存在buffer cache并且修改数据块的数据量没有超过cache buffer 10%,快速清除事务信息。
(2)      延迟块清除(delayedblock cleanout)当修改的数据块的阀值超过10% 或者本次事务相关的数据块已经被刷出了buffer cacheoracle会下次访问此block时再清除事务信息。
下面通过一个实验测试,来熟悉一下delayed block cleanout的处理
SQL> select * from  v$version ;
 
BANNER
----------------------------------------------------------------
Oracle Database 10gEnterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE   10.2.0.1.0     Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 – Production
 
SQL> show parameter undo;
 
NAME                                TYPE       VALUE
------------------------------------ ----------- ------------------------------
undo_management                     string     AUTO
undo_retention                      integer    900
undo_tablespace                     string     UNDOTBS1
 
 
SQL> conn japie/japie
Connected.
SQL> create tabletest_delayed as select * from user_objects;
 
Table created.
 
 
 
SQL> select count(1) from test_delayed;
 
 COUNT(1)
----------
        3
SQL> update test_delayed set object_id=1 where object_name='TEST_REDO';
 
1 row updated.
 
SQL> update test_delayed set object_id=2 where object_name='TEST_DELAYED';
 
1 row updated.
 
SQL>  -----不提交
查询回滚段信息:
SQL> col segment_name for a20;
select owner,segment_name,SEGMENT_ID,FILE_ID,BLOCK_ID,STATUS
SQL> tablespace_name from dba_rollback_segs;
 2
OWNER SEGMENT_NAME        SEGMENT_ID   FILE_ID  BLOCK_ID TABLESPACE_NAME
------ -------------------- ---------- ---------- ---------- ----------------
SYS   SYSTEM                       0         1         9 ONLINE
PUBLIC _SYSSMU1$                    1         2         9 ONLINE
PUBLIC _SYSSMU2$                    2         2        25 ONLINE
PUBLIC _SYSSMU3$                    3         2        41 ONLINE
PUBLIC _SYSSMU4$                    4         2        57 ONLINE
PUBLIC _SYSSMU5$                    5         2        73 ONLINE
PUBLIC _SYSSMU6$                    6         2        89 ONLINE
PUBLIC _SYSSMU7$                    7         2       105 ONLINE
PUBLIC _SYSSMU8$                    8         2       121 ONLINE
PUBLIC _SYSSMU9$                    9         2       137 ONLINE
PUBLIC _SYSSMU10$                  10         2       153 ONLINE
 
11 rows selected.
 
查询事务信息
SQL> select xidusn,xidslot,xidsqn,ubablk,ubafil,ubarec from v$transaction;
 
   XIDUSN   XIDSLOT    XIDSQN    UBABLK    UBAFIL    UBAREC
----------    ----------    ----------     ---------- -     --------- ----------
        6        40       427        99         2         7
查询该活动事务所在的回滚段
SQL> select * from  v$rollname where usn = &usn;
Enter value for usn: 6
old  1: select * from  v$rollname where usn = &usn
new  1: select * from  v$rollname where usn = 6
 
      USN NAME
---------- ------------------------------
        6_SYSSMU6$
查询test_delayed对象所在的fileid blockid由于数据对象还存在buffer
SQL> select b.segment_name,a.file#,a.dbarfil,a.dbablk,a.class,
 2 a.state,decode(bitand(flag,1), 0, 'N', 'Y') DIRTY
 3 from x$bh a,dba_extents b
 4 where b.RELATIVE_FNO = a.dbarfil
 5 and b.BLOCK_ID <= a.dbablk and b.block_id + b.blocks > a.dbablk
 6 and b.owner='GABRIEL' and b.segment_name='TEST_DELAYED';
 
SEGMENT_NAME             FILE#   DBARFIL    DBABLK     CLASS     STATE D
-------------------- ---------- ---------- ---------- ---------- ---------- -
TEST_DELAYED                 8         8        28         1         1 N
TEST_DELAYED                 8         8        28         1         3 N
TEST_DELAYED                 8         8        28         1         3 N
TEST_DELAYED                 8         8        27         4         1 N
TEST_DELAYED                 8         8        27         4         3 N
由上可知:x$bh.class= 4 表示为segment header x$bh.state =3为前镜像块,因此file#=8
Dbablk=28为数据块
 
SQL> alter system dump datafile 8 block 28;
 
System altered.
 
SQL> alter system dump undo header '_SYSSMU6$';
 
System altered.
 
SQL> alter system dump datafile 2 block 99;
 
System altered.
 
SQL> @gettrname.sql
 
TRACE_FILE_NAME
--------------------------------------------------------------------------------
/u01/app/oracle/admin/gabriel/udump/gabriel_ora_4756.trc
 
以下为trace文件中的截图部分
Block header dump: 0x0200001c
 Object id on Block? Y
 seg/obj: 0xcf1a csc: 0x00.f4707 itc: 3 flg: E typ: 1 - DATA
    brn: 0 bdba: 0x2000019 ver: 0x01 opc: 0
    inc: 0 exflg: 0
 
 Itl          Xid                 Uba        Flag Lck       Scn/Fsc
0x01  0xffff.000.00000000 0x00000000.0000.00 C---   0 scn 0x0000.000f4707
0x02  0x0006.028.000001ab 0x00800063.0156.07 ----   2 fsc 0x0004.00000000
0x03  0x0000.000.00000000 0x00000000.0000.00 ----   0 fsc 0x0000.00000000
---事务信息存在
tab 0, row 1, @0x1cf8
tl: 76 fb: --H-FL--lb: 0x2 cc: 12
col 0: [ 9] 54 45 53 54 5f 52 45 44 4f
col 1: *NULL*
col 2: [ 2] c1 02
col 3: [ 4] c3 06 1d 2d
col 4: [ 5] 54 41 42 4c 45
col 5: [ 7] 78 6f 06 17 0d 0c 23
col 6: [ 7] 78 6f 06 17 0d 0c 23
col 7: [19] 32 30 31 31 2d 30 36 2d 32 33 3a 31 32 3a 31 31 3a 33 34
col 8: [ 5] 56 41 4c 49 44
col 9: [ 1] 4e
col 10: [ 1] 4e
col 11: [ 1] 4e
tab 0, row 2, @0x1ca9
tl: 79 fb: --H-FL--lb: 0x2 cc: 12
col 0: [12] 54 45 53 54 5f 44 45 4c 41 59 45 44
col 1: *NULL*
col 2: [ 2] c1 03
col 3: [ 4] c3 06 1f 13
col 4: [ 5] 54 41 42 4c 45
col 5: [ 7] 78 6f 08 14 16 02 35
col 6: [ 7] 78 6f 08 14 16 02 35
col 7: [19] 32 30 31 31 2d 30 38 2d 32 30 3a 32 31 3a 30 31 3a 35 32
col 8: [ 5] 56 41 4c 49 44
col 9: [ 1] 4e
col 10: [ 1] 4e
col 11: [ 1] 4e
end_of_block_dump
End dump data blocks tsn: 9 file#: 8 minblk 28 maxblk 28
*** 2011-08-20 23:25:38.403
---锁信息也存在
再来仔细看看undo segment header信息:
 TRN TBL::
 
 index state cflags wrap#   uel        scn           dba           parent-xid   nub    stmt_num   cmt
 ------------------------------------------------------------------------------------------------
0x28  10   0x80 0x01ab 0x0002 0x0000.000f59ac 0x00800063 0x0000.000.00000000 0x00000001  0x00000000 0
0x28转化为十进制为40刚好为前面查询的事务槽,state状态为10表示活动事务,dba 0x00800063转化为2进制0000 0000 1000 0000 0000 0000 0110 0011根据dba的转换2号文件的64+32+2+1 =99
接下来我们看看undo段的转存信息(限于篇幅,只截取了部分关键信息)
Start dump data blocks tsn: 1 file#: 2 minblk 99 maxblk 99
buffer tsn: 1 rdba: 0x00800063 (2/99)
scn: 0x0000.000f59c1 seq: 0x01 flg: 0x04 tail: 0x59c10201
frmt: 0x02 chkval: 0xa7ae type: 0x02=KTU UNDO BLOCK
Hex dump of block: st=0, typ_found=1
…….
UNDO BLK:
xid: 0x0006.028.000001ab seq: 0x156 cnt: 0x7  irb: 0x7  icl: 0x0  flg: 0x0000
 
 Rec Offset     Rec Offset     Rec Offset     Rec Offset     Rec Offset
---------------------------------------------------------------------------
0x01 0x1ecc    0x02 0x1e00    0x03 0x1d1c    0x04 0x1c80    0x05 0x1c04
0x06 0x1ad0    0x07 0x19c4
 
*-----------------------------
* Rec #0x1 slt: 0x06 objn: 49948(0x0000c31c) objd: 49948 tblspc: 2(0x00000002)
*      Layer: 11 (Row)  opc: 1  rci 0x00
Undo type: Regular undo  Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00800062
*-----------------------------
KDO undo record:
KTB Redo
op: 0x02 ver: 0x01
op: C uba: 0x00800062.0156.1e
KDO Op code: URP row dependencies Disabled
 xtype: XA flags: 0x00000000 bdba: 0x00c05be8 hdba: 0x00c05be3
itli: 2 ispac: 0 maxfr: 4858
tabn: 0 slot: 7(0x7) flag: 0x2c lock: 0 ckix: 0
ncol: 12 nnew: 2 size: 0
col 9: [ 1] 80
col 10: [ 1] 80
 
*-----------------------------
* Rec #0x2 slt: 0x06 objn: 49871(0x0000c2cf) objd: 49871 tblspc: 2(0x00000002)
*      Layer: 10 (Index)  opc: 22  rci 0x01
Undo type: Regular undo  Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00000000
*-----------------------------
index undo for leaf key operations
KTB Redo
op: 0x04 ver: 0x01
op: L itl: xid: 0x0003.02a.000001b9 uba: 0x008000d7.0174.23
………..
*-----------------------------
* Rec #0x6 slt: 0x28 objn: 53018(0x0000cf1a) objd: 53018 tblspc: 9(0x00000009)
*      Layer: 11 (Row)  opc: 1  rci 0x00
Undo type: Regular undo   Begin trans   Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00000000
*-----------------------------
uba: 0x00800063.0156.04 ctl max scn: 0x0000.000f5354 prv tx scn: 0x0000.000f535c
txn start scn: scn: 0x0000.000f59ac logon user: 64
 prev brb: 8388871 prev bcl: 0
KDO undo record:
KTB Redo
op: 0x03 ver: 0x01
op: Z
KDO Op code: URP row dependencies Disabled
 xtype: XA flags: 0x00000000 bdba: 0x0200001c hdba: 0x0200001b
itli: 2 ispac: 0 maxfr: 4858
tabn: 0 slot: 1(0x1) flag: 0x2c lock: 0 ckix: 183
ncol: 12 nnew: 1 size: 2
col 2: [ 4] c3 06 1d 2d
 
*-----------------------------
*Rec #0x7 slt: 0x28 objn: 53018(0x0000cf1a) objd: 53018 tblspc: 9(0x00000009)
*      Layer: 11 (Row)  opc: 1  rci 0x06
Undo type: Regular undo  Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00000000
*-----------------------------
KDO undo record:
KTB Redo
op: 0x02 ver: 0x01
op: C uba: 0x00800063.0156.06
KDO Op code: URP row dependencies Disabled
 xtype: XA flags: 0x00000000 bdba: 0x0200001c hdba: 0x0200001b
itli: 2 ispac: 0 maxfr: 4858
tabn: 0 slot: 2(0x2) flag: 0x2c lock: 0 ckix: 0
ncol: 12 nnew: 1 size: 2
col 2: [ 4] c3 06 1f 13
 
End dump data blocks tsn: 1 file#: 2 minblk 99 maxblk 99
---irb: 0x7 最近未提交事务的起始回滚点,回滚段信息偏移量的最后偏移地址刚好相等
-- rci 0x06代表undo chain下一偏移量地址
 
上面dump信息是整个事务在没有commit的情况下产生,下面我们flush一下 buffer_cachebuffer cache中的前数据块写入dbfile,然后将事务commit,我们再认真比对dump信息,
SQL> alter system flush buffer_cache;
 
System altered.
 
------在事务窗体进行以下操作:
SQL> show user
USER is "GABRIEL"
SQL> commit;
 
Commit complete.

重复以上dump操作
…….
SQL> alter system dump datafile 2 block 99;
 
System altered.
 
SQL> @gettrname.sql
 
TRACE_FILE_NAME
--------------------------------------------------------------------------------
/u01/app/oracle/admin/gabriel/udump/japie_ora_4963.trc
 
先看看数据块的dump信息
Block header dump: 0x0200001c
 Object id on Block? Y
 seg/obj: 0xcf1a csc: 0x00.f4707 itc: 3 flg: E typ: 1 - DATA
    brn: 0 bdba: 0x2000019 ver: 0x01 opc: 0
    inc: 0 exflg: 0
 
 Itl          Xid                 Uba        Flag Lck       Scn/Fsc
0x01  0xffff.000.00000000 0x00000000.0000.00 C---   0 scn 0x0000.000f4707
0x02  0x0006.028.000001ab 0x00800063.0156.07 ----   2 fsc 0x0004.00000000
0x03  0x0000.000.00000000 0x00000000.0000.00 ----   0 fsc 0x0000.00000000
 
tab 0, row 1, @0x1cf8
tl: 76 fb: --H-FL-- lb: 0x2 cc: 12
col 0: [ 9] 54 45 53 54 5f 52 45 44 4f
col 1: *NULL*
col 2: [ 2] c1 02
col 3: [ 4] c3 06 1d 2d
col 4: [ 5] 54 41 42 4c 45
col 5: [ 7] 78 6f 06 17 0d 0c 23
col 6: [ 7] 78 6f 06 17 0d 0c 23
col 7: [19] 32 30 31 31 2d 30 36 2d 32 33 3a 31 32 3a 31 31 3a 33 34
col 8: [ 5] 56 41 4c 49 44
col 9: [ 1] 4e
col 10: [ 1] 4e
col 11: [ 1] 4e
tab 0, row 2, @0x1ca9
tl: 79 fb: --H-FL-- lb: 0x2 cc: 12
col 0: [12] 54 45 53 54 5f 44 45 4c 41 59 45 44
col 1: *NULL*
col 2: [ 2] c1 03
col 3: [ 4] c3 06 1f 13
col 4: [ 5] 54 41 42 4c 45
col 5: [ 7] 78 6f 08 14 16 02 35
col 6: [ 7] 78 6f 08 14 16 02 35
col 7: [19] 32 30 31 31 2d 30 38 2d 32 30 3a 32 31 3a 30 31 3a 35 32
col 8: [ 5] 56 41 4c 49 44
col 9: [ 1] 4e
col 10: [ 1] 4e
col 11: [ 1] 4e
end_of_block_dump
End dump data blocks tsn: 9 file#: 8 minblk 28 maxblk 28
*** 2011-08-21 00:18:07.820
可以看出数据块的信息与commit之前的内容基本吻合
 
再来仔细看看undo segment header信息:
  0x27   9   0x00 0x01ab 0x0015 0x0000.000f5655 0x00800062 0x0000.000.00000000 0x00000002  0x00000000 1313850640
  0x28   9   0x00 0x01ab 0xffff 0x0000.000f6a64 0x00800063 0x0000.000.00000000 0x00000001  0x00000000 1313857062
  0x29   9   0x00 0x01aa 0x000a 0x0000.000f54e4 0x00800108 0x0000.000.00000000 0x00000001  0x00000000 1313849990
-----事务已经提交
接下来我们看看undo段的转存信息(限于篇幅,只截取了部分关键信息)
*** 2011-08-21 00:18:20.252
Start dump data blocks tsn: 1 file#: 2 minblk 99 maxblk 99
buffer tsn: 1 rdba: 0x00800063 (2/99)
scn: 0x0000.000f59c1 seq: 0x01 flg: 0x04 tail: 0x59c10201
frmt: 0x02 chkval: 0xa7ae type: 0x02=KTU UNDO BLOCK
Hex dump of block: st=0, typ_found=1
Dump of memory from 0x0D50A600 to 0x0D50C600
UNDO BLK:
xid: 0x0006.028.000001ab seq: 0x156 cnt: 0x7  irb: 0x7  icl: 0x0  flg: 0x0000
 
 Rec Offset     Rec Offset     Rec Offset     Rec Offset     Rec Offset
---------------------------------------------------------------------------
0x01 0x1ecc    0x02 0x1e00    0x03 0x1d1c    0x04 0x1c80    0x05 0x1c04
0x06 0x1ad0    0x07 0x19c4
 
*-----------------------------
* Rec #0x1 slt: 0x06 objn: 49948(0x0000c31c) objd: 49948 tblspc: 2(0x00000002)
*      Layer: 11 (Row)  opc: 1  rci 0x00
Undo type: Regular undo  Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00800062
*-----------------------------
KDO undo record:
KTB Redo
op: 0x02 ver: 0x01
op: C uba: 0x00800062.0156.1e
KDO Op code: URP row dependencies Disabled
 xtype: XA flags: 0x00000000 bdba: 0x00c05be8 hdba: 0x00c05be3
itli: 2 ispac: 0 maxfr: 4858
tabn: 0 slot: 7(0x7) flag: 0x2c lock: 0 ckix: 0
ncol: 12 nnew: 2 size: 0
col 9: [ 1] 80
col 10: [ 1] 80
 
*-----------------------------
* Rec #0x2 slt: 0x06 objn: 49871(0x0000c2cf) objd: 49871 tblspc: 2(0x00000002)
*      Layer: 10 (Index)  opc: 22  rci 0x01
Undo type: Regular undo  Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00000000
*-----------------------------
index undo for leaf key operations
KTB Redo
op: 0x04 ver: 0x01
op: L itl: xid: 0x0003.02a.000001b9 uba: 0x008000d7.0174.23
                     flg: C---   lkc: 0    scn: 0x0000.000f5659
Dump kdilk : itl=2, kdxlkflg=0xc1 sdc=0 indexid=0xc059ab block=0x00c059b0
*-----------------------------
* Rec #0x6 slt: 0x28 objn: 53018(0x0000cf1a) objd: 53018 tblspc: 9(0x00000009)
*      Layer: 11 (Row)  opc: 1  rci 0x00
Undo type: Regular undo   Begin trans   Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00000000
*-----------------------------
uba: 0x00800063.0156.04 ctl max scn: 0x0000.000f5354 prv tx scn: 0x0000.000f535c
txn start scn: scn: 0x0000.000f59ac logon user: 64
 prev brb: 8388871 prev bcl: 0
KDO undo record:
KTB Redo
op: 0x03 ver: 0x01
op: Z
KDO Op code: URP row dependencies Disabled
 xtype: XA flags: 0x00000000 bdba: 0x0200001c hdba: 0x0200001b
itli: 2 ispac: 0 maxfr: 4858
tabn: 0 slot: 1(0x1) flag: 0x2c lock: 0 ckix: 183
ncol: 12 nnew: 1 size: 2
col 2: [ 4] c3 06 1d 2d
 
*-----------------------------
* Rec #0x7 slt: 0x28 objn: 53018(0x0000cf1a) objd: 53018 tblspc: 9(0x00000009)
*      Layer: 11 (Row)  opc: 1  rci 0x06
Undo type: Regular undo  Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00000000
*-----------------------------
KDO undo record:
KTB Redo
op: 0x02 ver: 0x01
op: C uba: 0x00800063.0156.06
KDO Op code: URP row dependencies Disabled
 xtype: XA flags: 0x00000000 bdba: 0x0200001c hdba: 0x0200001b
itli: 2 ispac: 0 maxfr: 4858
tabn: 0 slot: 2(0x2) flag: 0x2c lock: 0 ckix: 0
ncol: 12 nnew: 1 size: 2
col 2: [ 4] c3 06 1f 13
由两次的dump对比可以得出:块延迟清除只是更改了undo segment header的事务信息状态,数据块与undo块信息均保持不变
 
--
 
SQL> set echo off
SQL> set autotrace on
SQL> select * from gabriel.test_delayed; ---将数据块再次缓存在cache buffer
Note
-----
  - dynamic sampling used for this statement
 
 
Statistics
----------------------------------------------------------
       178 recursive calls
         0 db block gets
        27 consistent gets
         7 physical reads
        72 redo size
      1364 bytes sent via SQL*Net to client
       385 bytes received via SQL*Net from client
         2 SQL*Net roundtrips to/from client
         4 sorts (memory)
         0 sorts (disk)
         3 rows processed
 
再次转存数据块信息
SQL> alter system dump datafile 8 block 28;
 
System altered.
 
SQL> @gettrname.sql
 
TRACE_FILE_NAME
--------------------------------------------------------------------------------
/u01/app/oracle/admin/gabriel/udump/gabriel_ora_5017.trc
再次观察数据块的dump信息
 
*** 2011-08-21 00:50:23.744
*** SERVICE NAME:(SYS$USERS) 2011-08-21 00:50:23.743
*** SESSION ID:(152.73) 2011-08-21 00:50:23.743
Start dump data blocks tsn: 9 file#: 8 minblk 28 maxblk 28
buffer tsn: 9 rdba: 0x0200001c (8/28)
 
Block header dump: 0x0200001c
 Object id on Block? Y
 seg/obj: 0xcf1a csc: 0x00.f6e54 itc: 3 flg: E typ: 1 - DATA
    brn: 0 bdba: 0x2000019 ver: 0x01 opc: 0
    inc: 0 exflg: 0
 
 Itl          Xid                 Uba        Flag Lck       Scn/Fsc
0x01  0xffff.000.00000000 0x00000000.0000.00 C---   0 scn 0x0000.000f4707
0x02  0x0006.028.000001ab 0x00800063.0156.07 C---   0 scn 0x0000.000f6a64
0x03  0x0000.000.00000000 0x00000000.0000.00 ----   0 fsc 0x0000.00000000
---事务信息清除
block_row_dump:
tab 0, row 0, @0x1f1d
tl: 99 fb: --H-FL-- lb: 0x0 cc: 12
col 0: [30]
 42 49 4e 24 70 6c 6f 37 43 4f 51 50 35 34 54 67 51 4b 6a 41 62 67 41 4d 4a
 51 3d 3d 24 30
col 1: *NULL*
col 2: [ 4] c3 06 1d 19
col 3: [ 4] c3 06 1d 19
col 4: [ 5] 54 41 42 4c 45
col 5: [ 7] 78 6f 04 1a 05 1c 21
col 6: [ 7] 78 6f 06 17 0d 08 3c
col 7: [19] 32 30 31 31 2d 30 36 2d 32 33 3a 31 32 3a 30 37 3a 35 39
col 8: [ 5] 56 41 4c 49 44
col 9: [ 1] 4e
col 10: [ 1] 4e
col 11: [ 1] 4e
tab 0, row 1, @0x1cf8
tl: 76 fb: --H-FL--lb: 0x0 cc: 12
col 0: [ 9] 54 45 53 54 5f 52 45 44 4f
col 1: *NULL*
col 2: [ 2] c1 02
col 3: [ 4] c3 06 1d 2d
col 4: [ 5] 54 41 42 4c 45
col 5: [ 7] 78 6f 06 17 0d 0c 23
col 6: [ 7] 78 6f 06 17 0d 0c 23
col 7: [19] 32 30 31 31 2d 30 36 2d 32 33 3a 31 32 3a 31 31 3a 33 34
col 8: [ 5] 56 41 4c 49 44
col 9: [ 1] 4e
col 10: [ 1] 4e
col 11: [ 1] 4e
tab 0, row 2, @0x1ca9
tl: 79 fb: --H-FL--lb: 0x0 cc: 12
col 0: [12] 54 45 53 54 5f 44 45 4c 41 59 45 44
col 1: *NULL*
col 2: [ 2] c1 03
col 3: [ 4] c3 06 1f 13
col 4: [ 5] 54 41 42 4c 45
col 5: [ 7] 78 6f 08 14 16 02 35
col 6: [ 7] 78 6f 08 14 16 02 35
---锁信息已经清除
 
 
总结整个block delaye cleanout过程
(1)    本次事务相关的数据块已经被刷出了buffer cache,当本次事务提交后,事务相关的data block ,undo block上的事务信息,锁信息不会被清除。
 
  (2)     data block再次进入buffer cacheoracle在读取次数据块时作事务信息锁信息的清除处理

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-251140-1-1.html 上篇帖子: Oracle表变化趋势追踪记录(原创) 下篇帖子: Oracle内存结构 share pool library cache
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表