- 浏览: 655953 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
HkEndless:
不好意思,请问这确定是回调机制吗。你的例子中只是将接口的实现类 ...
Spring CallBack回调机制介绍 -
hanmiao:
写的真乱啊,完全不知所云...
Java如何调用可执行文件和批处理命令 -
junia_1:
junia_1 写道 shock: ...
为什么要使用EJB -
junia_1:
shock:
为什么要使用EJB -
coollifer:
不错
SQL Server数据导入到Oracle中的方法
为了保证事务的回退和满足多用户的 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 在读取次数据块时 作 事务信息 锁信息的清除处理
发表评论
-
ORA-14551: 无法在查询中执行 DML 操作
2013-11-30 13:45 1355最近在调试一个带DML操作的函数时,一直不成功,在PL/SQ ... -
Oracle Recursive Calls 说明
2013-04-09 23:11 1483一. Recursive Calls 说明 在执行计划 ... -
consistent gets db block gets
2013-04-09 19:58 1427consistent gets :consistent_ge ... -
SQL Server数据导入到Oracle中的方法
2012-07-17 17:09 1589在我们使用SQL Server数据库的过程中,有时需要将SQL ... -
更改ORACLE归档路径及归档模式
2012-07-16 18:23 1858在ORACLE10g和11g版本,ORAC ... -
disable/enable validate/novalidate 的区别
2012-01-08 11:41 1224启用约束: enable( validate) :启用约束,创 ... -
linux用dd测试磁盘速度
2012-01-07 21:58 1004首先要了解两个特殊的设备: /dev/null:回收站、 ... -
在数据分布严重不均的列上使用绑定变量容易错过更好的执行计划
2012-01-07 20:49 1011在数据分布严重不均的列上使用绑定变量容易错过更好的执行计划,原 ... -
Oracle hash join
2012-01-07 17:00 945hash join是oracle里面一个非常强悍的功能 ... -
恢复被rm意外删除数据文件
2012-01-05 12:30 1243一.模拟数据文件删除 [oracle ... -
Oracle数据库SCN号详解
2012-01-04 19:25 1534Oracle数据库SCN号详解: 系统检查点scn(v$da ... -
oracle常见问题与解答
2012-01-03 20:22 16641.对于sql,有几种方法查看执行计划,每种方法有什么区别,对 ... -
Oracle虚拟私有数据库(VPD)概述及简单举例
2011-12-23 12:35 1540Oracle虚拟私有数据库(VPD)概述及简单举例 1、Ora ... -
alter table move跟shrink space的区别
2011-12-17 15:02 1274都知道alter table move 或shrink spa ... -
How to dump Oracle Data Block?
2011-12-16 15:22 992Often while doing instance tuni ... -
oracle索引的5种使用模式
2011-12-14 21:19 1072索引的使用对数据库的性能有巨大的影响。 共有五类不同的使用模式 ... -
HP Unix中的dba MLOCK
2011-12-14 19:14 2224最近在HP平台上遇到两次跟dba MLOCK权限相关的错误: ... -
NESTED LOOP、HASH JOIN、SORT MERGE JOIN
2011-12-13 23:18 1372表连接方式及使用场合 ... -
Oracle用户权限
2011-12-12 19:48 1499系统权限: 1、使用GRANT语句向用户赋予系统权限: ... -
union 和 union all 的区别。
2011-12-12 18:43 978SQL> select * from stud; SI ...
相关推荐
标题中的“rabbitmq_delayed_3.6.x延迟插件.rar”表明这是一个关于RabbitMQ的3.6.x版本的延迟消息插件。RabbitMQ是业界广泛使用的开源消息代理和队列服务器,它允许应用程序之间进行异步通信。延迟队列在某些场景下...
RabbitMQ延迟队列插件,即rabbitmq_delayed_message_exchange-3.8.0,是一个针对RabbitMQ消息代理的扩展,旨在提供一种机制,使得消息能够在特定延迟后才被投递到相应的队列。这个功能在很多业务场景中非常有用,...
rabbitmq 延迟队列插件 rabbitmq_delayed_message_exchange_3.8.17 解压即用 输入命令进行安装 .\rabbitmq-plugins enable rabbitmq_delayed_message_exchange
在这个“rabbitmq-server-windows-3.8.9”压缩包中,包含了RabbitMQ服务器的Windows版本,以及一个延迟消息插件“rabbitmq_delayed_message_exchange”。 RabbitMQ延迟插件“rabbitmq_delayed_message_exchange”是...
在本压缩包中,我们关注的是RabbitMQ的一个重要扩展——延迟插件(rabbitmq_delayed_message_exchange),该插件允许我们在RabbitMQ中实现消息的延迟投递。 延迟插件的主要功能是让消息在特定的时间之后才被消费者...
为了使用 DelayQueue,我们需要首先声明一个 Delayed 的对象,例如,我们可以声明一个 Task 对象, Task 对象实现了 Delayed 接口,用于表示一个具有延迟执行的任务。 ``` public class Task<T extends Runnable> ...
在RabbitMQ 3.7版本中,引入了一个新的特性——延迟消息交换机(Delayed Message Exchange),这为处理定时任务和延迟触发的业务逻辑提供了便利。本文将深入探讨这一功能及其应用场景。 ### 1. 延迟消息交换机介绍 ...
在某些场景下,我们需要将消息延迟发送,例如定时任务、订单超时处理等,这时`rabbitmq_delayed_message_exchange`插件就派上了用场。 **插件介绍** `rabbitmq_delayed_message_exchange`是RabbitMQ的一个扩展,它...
RabbitMQ延迟消息交换机(rabbitmq_delayed_message_exchange)则是RabbitMQ中的一个特色插件,允许我们设定消息在特定时间后才被投递,这对于实现定时任务、延迟通知等功能具有极大的价值。本文将深入探讨RabbitMQ ...
rabbitmq_delayed_message_exchange-20171215-3.6.x.zip 是一个为RabbitMQ设计的插件压缩包,旨在为RabbitMQ添加延迟消息交换功能; 以下是几个典型的使用场景示例: 订单超时处理: 当用户下单后未及时支付时,...
标题中的“rabbitmq_delayed_message_exchange-20171215-3.6.x.ez.zip”指的是RabbitMQ的一个插件,名为“延迟消息交换”(Delayed Message Exchange),发布于2017年12月15日,适用于RabbitMQ 3.6.x版本。...
在这个压缩包文件"rabbitmq_delayed_message_exchange-20171215-3.6.x.zip"中,我们关注的核心是延迟消息交换(Delayed Message Exchange)功能,这是RabbitMQ在3.6.x版本中引入的一个重要特性。该功能允许用户设置...
rabbitmq延迟队列插件+rabbitmq_delayed_message_exchange-3.11.1.ez,配合 Docker-compose搭建rabbitmq(并开启管理界面和延迟队列)实现一键部署本地rabbitmq服务,下载后解压文件到指定目录
RabbitMQ延迟消息插件rabbitmq_delayed_message_exchange
Rabbitmq 延迟插件 rabbitmq_delayed_message_exchange-20171215-3.6.x,注意适用于3.5.8 及其以后的版本
在这个场景中,我们关注的是`rabbitmq_delayed_message_exchange-20171201-3.7.x.ez`插件,这是一个用于RabbitMQ的特殊交换机类型,它允许我们延迟消息的投递,即在特定时间后才将消息发送到队列。 **延迟消息...
在这个场景中,我们关注的是RabbitMQ的一个特殊插件——"rabbitmq-delayed-message-exchange",它允许我们在RabbitMQ中实现延迟消息的功能。延迟消息是指消息在发送后不会立即被消费者处理,而是会在设定的时间间隔...
该压缩包文件"RabbitMQ延迟消息插件.zip"包含了RabbitMQ延迟消息插件的详细内容,特别是版本为"rabbitmq_delayed_message_exchange-3.8.0",这意味着它是针对RabbitMQ 3.8.0版本的。这个插件允许我们在RabbitMQ中...