oracle延迟块清除机制,oracle 块推迟清除(delayed block cleanout)

oracle 块延迟清除(delayed block cleanout)

为了保证事务的回退和满足多用户的

CR

oracle

引入了

undo

机制,

由于

undo

是循环使用的,在一个事务完成过程中,它与

redo

相互配合,其中

undo

在一次事务中需要完成以下工作:

(1)

Transaction

开始前

回滚段获取一个

ITL(

事务槽

)

,分配空间,

记录事务信息

(2)

Transaction

提交后,

redo

完成记录,同时还清除回滚段的事务信息

包括行级锁,

ITL

信息

(commit

标志,

SCN

)

清除这些事务段的信息的过程就叫做

块清除,

在完成块清除时

,

我们本事务修改的数据块就会存在两种可能

(1)

所有的数据块还保存在

buffer

cache

中,

(2)

部分数据块或者是全部数据块由于

LRU

管理

已经被刷出了

buffer cache

oracle

为了考虑到块清除的成本,以及性能,会作以下两种方式的块清除处理:

(1)

快速块清除

(fast block

cleanout

),

当事务修改的数据库

全部保存在

buffer cache

并且修改数据块的数据量没有超过

cache buffer

10%

,快速清除事务信息。

(2)

延迟块清除

(delayed

block cleanout)

当修改的数据块的阀值超过

10%

或者本次事务相关的数据块已经被刷出了

buffer cache

oracle

会下次访问此

block

时再清除事务信息。

下面通过一个实验

测试,来熟悉一下

delayed block cleanout

的处理

SQL> select

*

from

v$version ;

BANNER

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

Oracle Database 10g

Enterprise 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

table

test_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_cache

buffer 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 cache

oracle

在读取次数据块时

事务信息

锁信息的清除处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值