SQL> @ver
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
SQL> create table t (id number,name varchar2(10));
Table created.
SQL> insert into t values (1,'AAA');
1 row created.
SQL> commit ;
Commit complete.
SQL> select ora_rowscn ,rowid ,t.* from t;
ORA_ROWSCN ROWID ID NAME
---------- ------------------ ---------- --------------------
3239076231 AABDrWAAEAAAACDAAA 1 AAA
SQL> @lookup_rowid AABDrWAAEAAAACDAAA
OBJECT FILE BLOCK ROW DBA
---------- ---------- ---------- ---------- --------------------
277206 4 131 0 4,131
BBED> set dba 4,131
DBA 0x01000083 (16777347 4,131)
BBED> p *kdbr[0]
rowdata[0]
----------
ub1 rowdata[0] @8178 0x2c
BBED> x /rnc
rowdata[0] @8178
----------
flag@8178: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8179: 0x01
cols@8180: 2
col 0[2] @8181: 1
col 1[3] @8184: AAA
-- *kdbr[0] 的地址 8178.
3.修改记录看看。
SQL> update t set name='BBB' where id=1;
1 row updated.
SQL> commit ;
Commit complete.
SQL> alter system checkpoint;
System altered.
--使用bbed观察:
BBED> set dba 4,131
DBA 0x01000083 (16777347 4,131)
BBED> p *kdbr[0]
rowdata[0]
----------
ub1 rowdata[0] @8178 0x2c
BBED> x /rnc
rowdata[0] @8178
----------
flag@8178: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8179: 0x02
cols@8180: 2
col 0[2] @8181: 1
col 1[3] @8184: BBB
SQL> update t set id=0, name='CCCC' where id=1;
1 row updated.
SQL> commit ;
Commit complete.
SQL> alter system checkpoint;
System altered.
--bbed观察:
BBED> set dba 4,131
DBA 0x01000083 (16777347 4,131)
BBED> p *kdbr[0]
rowdata[0]
----------
ub1 rowdata[0] @8168 0x2c
BBED> x /rnc
rowdata[0] @8168
----------
flag@8168: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8169: 0x01
cols@8170: 2
col 0[1] @8171: 0
col 1[4] @8173: CCCC
BBED> set offset 8178
OFFSET 8178
BBED> x /rnc
rowdata[10] @8178
-----------
flag@8178: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8179: 0x00
cols@8180: 2
col 0[2] @8181: 1
col 1[3] @8184: BBB
SQL> drop table t purge ;
Table dropped.
SQL> create table t (id number,name varchar2(4000));
Table created.
SQL> insert into t values (1,lpad('A',3000,'A'));
1 row created.
SQL> insert into t values (2,lpad('B',3000,'B'));
1 row created.
SQL> commit ;
Commit complete.
SQL> select ora_rowscn ,rowid ,t.id from t;
ORA_ROWSCN ROWID ID
---------- ------------------ ----------
3239078823 AABDrbAAEAAAACDAAA 1
3239078823 AABDrbAAEAAAACDAAB 2
SQL> @lookup_rowid AABDrbAAEAAAACDAAA
OBJECT FILE BLOCK ROW DBA
---------- ---------- ---------- ---------- --------------------
277211 4 131 0 4,131
--记录一下数据的位置
BBED> set dba 4,131
DBA 0x01000083 (16777347 4,131)
BBED> p kdbr
sb2 kdbr[0] @118 5079
sb2 kdbr[1] @120 2070
SQL> update t set name=lpad('C',4000,'C') where id=1;1 row updated.
SQL> commit ;
Commit complete.
SQL> alter system checkpoint;
System altered.
--bbed观察。数据还能容的下,注意观察对比!
--kdbr[0]= 5079 修改后变成 1070
--kdbr[1]= 2070 修改后变成 5079
--好像做一个"块内重整"(不知道专业术语应该叫什么),并没有出现行链接的情况。
BED> set dba 4,131
DBA 0x01000083 (16777347 4,131)
BBED> p kdbr
sb2 kdbr[0] @118 1070
sb2 kdbr[1] @120 5079
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-766631/ ,如需转载,请注明出处,否则将追究法律责任。