[20160728]]行链接行迁移与ITL槽3.txt

简介: [20160728]]行链接行迁移与ITL槽3.txt --上午测试了行链接行迁移与ITL槽的关系,链接如下: [20160727]行链接行迁移与ITL槽2.txt => http://blog.

[20160728]]行链接行迁移与ITL槽3.txt

--上午测试了行链接行迁移与ITL槽的关系,链接如下:
[20160727]行链接行迁移与ITL槽2.txt => http://blog.itpub.net/267265/viewspace-2122663/

--如果仔细看前面的测试可以发现当出现行链接或者行迁移时,除了增加1个空itl槽像如下:
0x05   0x0000.000.00000000  0x00000000.0000.00  C---    0  scn 0x0000.00000000

--并不重用原来的ITL槽,这样导致每次插入都增加1个ITL槽,并使用它。你可以发现前面9个ITL槽.

Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x000a.004.0000d0c9  0x00c0024a.29fd.23  C---    0  scn 0x0003.15762d70
0x02   0x000a.017.0000d0b7  0x00c00240.29fd.1c  C---    0  scn 0x0003.15762dfb
0x03   0x000a.00d.0000d0be  0x00c00240.29fd.25  C---    0  scn 0x0003.15762e02
0x04   0x000a.006.0000d0c6  0x00c00240.29fd.2e  C---    0  scn 0x0003.15762e09
0x05   0x000a.014.0000d0c3  0x00c00240.29fd.35  C---    0  scn 0x0003.15762e10
0x06   0x000a.00f.0000d0b8  0x00c00240.29fd.3c  C---    0  scn 0x0003.15762e17
0x07   0x000a.00c.0000d0b8  0x00c00240.29fd.43  C---    0  scn 0x0003.15762e1e
0x08   0x000a.00a.0000d0d3  0x00c0024a.29fd.2c  C---    0  scn 0x0003.15762e25
0x09   0x0001.00e.00000f91  0x00c0049a.0817.0f  C---    0  scn 0x0003.15762e2c
0x0a   0x0000.000.00000000  0x00000000.0000.00  C---    0  scn 0x0000.00000000
0x0b   0x0000.000.00000000  0x00000000.0000.00  C---    0  scn 0x0000.00000000
0x0c   0x0000.000.00000000  0x00000000.0000.00  C---    0  scn 0x0000.00000000
0x0d   0x0000.000.00000000  0x00000000.0000.00  C---    0  scn 0x0000.00000000
bdba: 0x010002ee

--现在继续测试:

1.环境:
SCOTT@book> @ &r/ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

SCOTT@book> create table empx as select * from emp where 1=2;
Table created.

--在1个会话里执行如下:
Insert into empx (EMPNO) Values (7369);
commit;
Insert into empx (EMPNO) Values (7499);
commit;
Insert into empx (EMPNO) Values (7521);
commit;
Insert into empx (EMPNO) Values (7566);
commit;
Insert into empx (EMPNO) Values (7654);
commit;
Insert into empx (EMPNO) Values (7698);
commit;
Insert into empx (EMPNO) Values (7782);
commit;
Insert into empx (EMPNO) Values (7788);
commit;
Insert into empx (EMPNO) Values (7839);
commit;
Insert into empx (EMPNO) Values (7844);
commit;
Insert into empx (EMPNO) Values (7876);
commit;
Insert into empx (EMPNO) Values (7900);
commit;
Insert into empx (EMPNO) Values (7902);
commit;
Insert into empx (EMPNO) Values (7934);
commit;

SCOTT@book> select rowid,empno from empx where rownum=1;
ROWID                     EMPNO
------------------ ------------
AAAXU/AAEAAAAI2AAA         7369

SCOTT@book> @ &r/rowid AAAXU/AAEAAAAI2AAA
      OBJECT         FILE        BLOCK          ROW DBA                  TEXT
------------ ------------ ------------ ------------ -------------------- ----------------------------------------
       95551            4          566            0 4,566                alter system dump datafile 4 block 566 ;

SCOTT@book> alter system checkpoint ;
System altered.

SCOTT@book> alter system dump datafile 4 block 566 ;
System altered.

--//检查转储:
Block header dump:  0x01000236
Object id on Block? Y
seg/obj: 0x1753f  csc: 0x03.15767520  itc: 2  flg: E  typ: 1 - DATA
     brn: 0  bdba: 0x1000230 ver: 0x01 opc: 0
     inc: 0  exflg: 0

Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x000a.018.0000d119  0x00c0013b.2a08.2d  --U-    1  fsc 0x0000.15767521
0x02   0x000a.00d.0000d10f  0x00c0013b.2a08.2e  --U-    1  fsc 0x0000.15767523
bdba: 0x01000236

--你可以发现仅仅存在2个ITL槽。也就是如果事务提交,会话会重用ITL槽。

2.继续回到原来的测试:

--// drop table t purge;
spool a.sql
select 'create table t (' from dual
union all
select 'col'||lpad(rownum-1,3,'0')||' number(2),' from dual connect by level<=1000
union all
select 'constraint t1_pk primary key (col000));' from dual ;
spool off

SCOTT@book> alter table t pctfree 0;
Table altered.

insert into t (col000,col766) values (1,1);
commit ;

SCOTT@book> select rowid,t.col000 from t ;

ROWID                  COL000
------------------ ----------
AAAXVAAAEAAAALuAAD          1

SCOTT@book> @ &r/rowid AAAXVAAAEAAAALuAAD
    OBJECT       FILE      BLOCK        ROW DBA                  TEXT
---------- ---------- ---------- ---------- -------------------- ----------------------------------------
     95552          4        750          3 4,750                alter system dump datafile 4 block 750 ;

3.插入一些数据看看ITL变化情况。

alter system dump datafile 4 block 750 ;

insert into t (col000,col255) values (2,2);
commit ;
alter system checkpoint ;
alter system dump datafile 4 block 750 ;
--//出现1次行内链接

insert into t (col000) values (3);
commit ;
alter system checkpoint ;
alter system dump datafile 4 block 750 ;

insert into t (col000) values (4);
commit ;
alter system checkpoint ;
alter system dump datafile 4 block 750 ;

insert into t (col000) values (5);
commit ;
alter system checkpoint ;
alter system dump datafile 4 block 750 ;

insert into t (col000) values (6);
commit ;
alter system checkpoint ;
alter system dump datafile 4 block 750 ;
--//后面这些操作不会出现行内迁移,就就是分片。

$ sed -n '/Itl/,/bdba:/p' /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_64063.trc
Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0003.018.000010bc  0x00c0009b.0c82.1a  --U-    4  fsc 0x0000.1576762d
0x02   0x0000.000.00000000  0x00000000.0000.00  ----    0  fsc 0x0000.00000000
0x03   0x0000.000.00000000  0x00000000.0000.00  C---    0  scn 0x0000.00000000
0x04   0x0000.000.00000000  0x00000000.0000.00  C---    0  scn 0x0000.00000000
0x05   0x0000.000.00000000  0x00000000.0000.00  C---    0  scn 0x0000.00000000
bdba: 0x010002ee
Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0003.018.000010bc  0x00c0009b.0c82.1a  --U-    4  fsc 0x0000.1576762d
0x02   0x000a.01c.0000d0de  0x00c00300.2a09.03  --U-    2  fsc 0x0000.15767778
0x03   0x0000.000.00000000  0x00000000.0000.00  C---    0  scn 0x0000.00000000
0x04   0x0000.000.00000000  0x00000000.0000.00  C---    0  scn 0x0000.00000000
0x05   0x0000.000.00000000  0x00000000.0000.00  C---    0  scn 0x0000.00000000
bdba: 0x010002ee
Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0003.018.000010bc  0x00c0009b.0c82.1a  --U-    4  fsc 0x0000.1576762d
0x02   0x000a.01c.0000d0de  0x00c00300.2a09.03  --U-    2  fsc 0x0000.15767778
0x03   0x000a.011.0000d113  0x00c00300.2a09.09  --U-    1  fsc 0x0000.1576777f
0x04   0x0000.000.00000000  0x00000000.0000.00  C---    0  scn 0x0000.00000000
0x05   0x0000.000.00000000  0x00000000.0000.00  C---    0  scn 0x0000.00000000
bdba: 0x010002ee
Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0003.018.000010bc  0x00c0009b.0c82.1a  --U-    4  fsc 0x0000.1576762d
0x02   0x000a.01c.0000d0de  0x00c00300.2a09.03  --U-    2  fsc 0x0000.15767778
0x03   0x000a.011.0000d113  0x00c00300.2a09.09  --U-    1  fsc 0x0000.1576777f
0x04   0x0007.00a.0000189a  0x00c004ff.0622.09  --U-    1  fsc 0x0000.15767786
0x05   0x0000.000.00000000  0x00000000.0000.00  C---    0  scn 0x0000.00000000
bdba: 0x010002ee
Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0003.018.000010bc  0x00c0009b.0c82.1a  --U-    4  fsc 0x0000.1576762d
0x02   0x000a.01c.0000d0de  0x00c00300.2a09.03  --U-    2  fsc 0x0000.15767778
0x03   0x000a.011.0000d113  0x00c00300.2a09.09  --U-    1  fsc 0x0000.1576777f
0x04   0x0007.00a.0000189a  0x00c004ff.0622.09  --U-    1  fsc 0x0000.15767786
0x05   0x000a.010.0000d10b  0x00c00300.2a09.11  --U-    1  fsc 0x0000.1576778d
bdba: 0x010002ee
Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x000a.002.0000d116  0x00c00300.2a09.15  --U-    1  fsc 0x0000.15767794
0x02   0x000a.01c.0000d0de  0x00c00300.2a09.03  C---    0  scn 0x0003.15767778
0x03   0x000a.011.0000d113  0x00c00300.2a09.09  C---    0  scn 0x0003.1576777f
0x04   0x0007.00a.0000189a  0x00c004ff.0622.09  C---    0  scn 0x0003.15767786
0x05   0x000a.010.0000d10b  0x00c00300.2a09.11  C---    0  scn 0x0003.1576778d
bdba: 0x010002ee

--可以发现占用5个ITL槽。

4.继续插入呢?

insert into t (col000,col766) values (7,7);
commit ;
alter system checkpoint ;
alter system dump datafile 4 block 750 ;

insert into t (col000,col766) values (8,8);
commit ;
alter system checkpoint ;
alter system dump datafile 4 block 750 ;

insert into t (col000,col766) values (9,9);
commit ;
alter system checkpoint ;
alter system dump datafile 4 block 750 ;

insert into t (col000,col766) values (10,10);
commit ;
alter system checkpoint ;
alter system dump datafile 4 block 750 ;

insert into t (col000,col766) values (11,11);
commit ;
alter system checkpoint ;
alter system dump datafile 4 block 750 ;

$ sed -n '/Itl/,/bdba:/p' /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_64063.trc
...

Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x000a.002.0000d116  0x00c00300.2a09.15  --U-    1  fsc 0x0000.15767794
0x02   0x000a.017.0000d10a  0x00c00300.2a09.1e  --U-    4  fsc 0x0000.157677d5
0x03   0x000a.011.0000d113  0x00c00300.2a09.09  C---    0  scn 0x0003.1576777f
0x04   0x0007.00a.0000189a  0x00c004ff.0622.09  C---    0  scn 0x0003.15767786
0x05   0x000a.010.0000d10b  0x00c00300.2a09.11  C---    0  scn 0x0003.1576778d
0x06   0x0000.000.00000000  0x00000000.0000.00  C---    0  scn 0x0000.00000000
bdba: 0x010002ee
Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x000a.002.0000d116  0x00c00300.2a09.15  --U-    1  fsc 0x0000.15767794
0x02   0x000a.017.0000d10a  0x00c00300.2a09.1e  --U-    4  fsc 0x0000.157677d5
0x03   0x000a.011.0000d113  0x00c00300.2a09.09  C---    0  scn 0x0003.1576777f
0x04   0x0007.00a.0000189a  0x00c004ff.0622.09  C---    0  scn 0x0003.15767786
0x05   0x000a.010.0000d10b  0x00c00300.2a09.11  C---    0  scn 0x0003.1576778d
0x06   0x000a.019.0000d113  0x00c00300.2a09.25  --U-    4  fsc 0x0000.157677dc
0x07   0x0000.000.00000000  0x00000000.0000.00  C---    0  scn 0x0000.00000000
bdba: 0x010002ee
Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x000a.002.0000d116  0x00c00300.2a09.15  --U-    1  fsc 0x0000.15767794
0x02   0x000a.017.0000d10a  0x00c00300.2a09.1e  --U-    4  fsc 0x0000.157677d5
0x03   0x000a.011.0000d113  0x00c00300.2a09.09  C---    0  scn 0x0003.1576777f
0x04   0x0007.00a.0000189a  0x00c004ff.0622.09  C---    0  scn 0x0003.15767786
0x05   0x000a.010.0000d10b  0x00c00300.2a09.11  C---    0  scn 0x0003.1576778d
0x06   0x000a.019.0000d113  0x00c00300.2a09.25  --U-    4  fsc 0x0000.157677dc
0x07   0x000a.000.0000d114  0x00c00300.2a09.2c  --U-    4  fsc 0x0000.157677e3
0x08   0x0000.000.00000000  0x00000000.0000.00  C---    0  scn 0x0000.00000000
bdba: 0x010002ee
Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x000a.002.0000d116  0x00c00300.2a09.15  --U-    1  fsc 0x0000.15767794
0x02   0x000a.017.0000d10a  0x00c00300.2a09.1e  --U-    4  fsc 0x0000.157677d5
0x03   0x000a.011.0000d113  0x00c00300.2a09.09  C---    0  scn 0x0003.1576777f
0x04   0x0007.00a.0000189a  0x00c004ff.0622.09  C---    0  scn 0x0003.15767786
0x05   0x000a.010.0000d10b  0x00c00300.2a09.11  C---    0  scn 0x0003.1576778d
0x06   0x000a.019.0000d113  0x00c00300.2a09.25  --U-    4  fsc 0x0000.157677dc
0x07   0x000a.000.0000d114  0x00c00300.2a09.2c  --U-    4  fsc 0x0000.157677e3
0x08   0x0008.014.00002606  0x00c016b2.0a72.19  --U-    4  fsc 0x0000.157677ea
0x09   0x0000.000.00000000  0x00000000.0000.00  C---    0  scn 0x0000.00000000
bdba: 0x010002ee

Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x000a.002.0000d116  0x00c00300.2a09.15  --U-    1  fsc 0x0000.15767794
0x02   0x000a.017.0000d10a  0x00c00300.2a09.1e  --U-    4  fsc 0x0000.157677d5
0x03   0x000a.011.0000d113  0x00c00300.2a09.09  C---    0  scn 0x0003.1576777f
0x04   0x0007.00a.0000189a  0x00c004ff.0622.09  C---    0  scn 0x0003.15767786
0x05   0x000a.010.0000d10b  0x00c00300.2a09.11  C---    0  scn 0x0003.1576778d
0x06   0x000a.019.0000d113  0x00c00300.2a09.25  --U-    4  fsc 0x0000.157677dc
0x07   0x000a.000.0000d114  0x00c00300.2a09.2c  --U-    4  fsc 0x0000.157677e3
0x08   0x0008.014.00002606  0x00c016b2.0a72.19  --U-    4  fsc 0x0000.157677ea
0x09   0x0006.013.0000121a  0x00c0119c.0901.1b  --U-    4  fsc 0x0000.1576786a
0x0a   0x0000.000.00000000  0x00000000.0000.00  C---    0  scn 0x0000.00000000
bdba: 0x010002ee

--//从以上测试还可以发现1个规律,就是如果出现行链接至少会增加1个空槽,只要空间允许。
0x0a   0x0000.000.00000000  0x00000000.0000.00  C---    0  scn 0x0000.00000000

--但是始终保存FLAG=C---的最多4个。以上测试不是很严谨,至少说明在出现行链接或者行迁移时,ITL槽数量会增加。
--这种情况特性容易出现在插入时行记录很短,更新以后行记录很大出现迁移,这样在迁移的块就会出现大量的itl槽,因为没出现1次行链接
--ITL槽的数量就增加1次(特殊情况会增加3个,比如分成4个row piece)。造成空间利用率下降。

--你可以继续插入:

insert into t (col000,col766) values (12,12);
commit ;
alter system checkpoint ;
alter system dump datafile 4 block 750 ;

$ sed -n '/Itl/,/bdba:/p' /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_64063.trc
...
 
Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x000a.002.0000d116  0x00c00300.2a09.15  --U-    1  fsc 0x0000.15767794
0x02   0x000a.017.0000d10a  0x00c00300.2a09.1e  --U-    4  fsc 0x0000.157677d5
0x03   0x000a.011.0000d113  0x00c00300.2a09.09  C---    0  scn 0x0003.1576777f
0x04   0x0007.00a.0000189a  0x00c004ff.0622.09  C---    0  scn 0x0003.15767786
0x05   0x000a.010.0000d10b  0x00c00300.2a09.11  C---    0  scn 0x0003.1576778d
0x06   0x000a.019.0000d113  0x00c00300.2a09.25  --U-    4  fsc 0x0000.157677dc
0x07   0x000a.000.0000d114  0x00c00300.2a09.2c  --U-    4  fsc 0x0000.157677e3
0x08   0x0008.014.00002606  0x00c016b2.0a72.19  --U-    4  fsc 0x0000.157677ea
0x09   0x0006.013.0000121a  0x00c0119c.0901.1b  --U-    4  fsc 0x0000.1576786a
0x0a   0x000a.01b.0000d124  0x00c00350.2a09.09  --U-    4  fsc 0x0000.15767bf2
0x0b   0x0000.000.00000000  0x00000000.0000.00  C---    0  scn 0x0000.00000000
bdba: 0x010002ee

insert into t (col000,col766) values (13,13);
commit ;
alter system checkpoint ;
alter system dump datafile 4 block 750 ;

insert into t (col000,col766) values (14,14);
commit ;
alter system checkpoint ;
alter system dump datafile 4 block 750 ;

$ sed -n '/Itl/,/bdba:/p' /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_64063.trc
...

Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x000a.002.0000d116  0x00c00300.2a09.15  C---    0  scn 0x0003.15767794
0x02   0x000a.017.0000d10a  0x00c00300.2a09.1e  C---    0  scn 0x0003.157677d5
0x03   0x000a.011.0000d113  0x00c00300.2a09.09  C---    0  scn 0x0003.1576777f
0x04   0x0007.00a.0000189a  0x00c004ff.0622.09  C---    0  scn 0x0003.15767786
0x05   0x000a.010.0000d10b  0x00c00300.2a09.11  C---    0  scn 0x0003.1576778d
0x06   0x000a.019.0000d113  0x00c00300.2a09.25  C---    0  scn 0x0003.157677dc
0x07   0x000a.000.0000d114  0x00c00300.2a09.2c  C---    0  scn 0x0003.157677e3
0x08   0x0008.014.00002606  0x00c016b2.0a72.19  C---    0  scn 0x0003.157677ea
0x09   0x0006.013.0000121a  0x00c0119c.0901.1b  C---    0  scn 0x0003.1576786a
0x0a   0x000a.01b.0000d124  0x00c00350.2a09.09  C---    0  scn 0x0003.15767bf2
0x0b   0x000a.018.0000d123  0x00c00350.2a09.10  C---    0  scn 0x0003.15767c12
0x0c   0x000a.019.0000d11a  0x00c00350.2a09.15  C---    0  scn 0x0003.15767c15
0x0d   0x0000.000.00000000  0x00000000.0000.00  C---    0  scn 0x0000.00000000
bdba: 0x010002ee

--//块写满的时候提交不再是快速提交,但是你可以发现有增加2个itl槽。
--//实际上这也是我生产系统看到的情况,从这个意义讲设计数据结构要考虑避免行迁移或者行链接这种因素。
--//^_^!!这我想起以前听课老师的一句话,如果你看到应用的pctfree都是10,这样的系统一定没有dba管理,
--//国内的IT现状就是如此,都在做表面文章。

目录
相关文章
|
Oracle 关系型数据库 测试技术
[20180402]行链接行迁移与ITL槽6.txt
[20180402]行链接行迁移与ITL槽6.txt --//上个星期测试行迁移与ITL浪费的问题,链接http://blog.itpub.net/267265/viewspace-2152265/ --//当时遇到一个问题,就是oracle为什么每次发生行迁移要建立一个ITL槽.
946 0
truncate后恢复包---FY_Recover_Data.pck 包的内容
truncate后恢复包---FY_Recover_Data.pck 包的内容                                                 ...
1470 0
|
Oracle 关系型数据库 测试技术
[20170412]bbed恢复修改记录(不等长).txt
[20170412]bbed恢复修改记录(不等长).txt --//昨天做了删除记录恢复测试,今天测试update记录如何还原通过bbed。 --//实际上类似的测试我自己做了好几次,都是按照别人的帖子依葫芦画瓢,没有很好理解一些内在的东西。
1011 0
|
数据库管理
[20170411]bbed删除记录的恢复.txt
[20170411]bbed删除记录的恢复.txt --//昨天上午做的测试,链接:http://blog.itpub.net/267265/viewspace-2136933/ --//我当时并没有选择恢复记录,仅仅看删除的内容.
1034 0
|
SQL Oracle 关系型数据库
[20160902][转载]跟踪rman操作.txt
[20160902]跟踪rman操作.txt --转载:跟踪rman https://laurent-leturgez.com/2016/08/29/tracing-oracle-binaries-and-tools/ --以前仅仅知道debug,没有知道这么细,做一个记录,原链接里面还有DGMGRL,EXPDP / IMPDP,SRVCTL,OPATCH,10046事件的跟踪。
742 0
|
Oracle 关系型数据库 测试技术
[20160729]行链接行迁移与ITL槽4.txt
[20160729]行链接行迁移与ITL槽4.txt --做了几个测试,有点乱. http://blog.itpub.net/267265/viewspace-2122700/ http://blog.
712 0
|
Oracle 关系型数据库 Perl
[20160727]行链接行迁移与ITL槽2.txt
[20160727]行链接行迁移与ITL槽2.txt --昨天我测试了如果出现行链接或者行迁移,会出现itl槽增加的情况。 http://blog.itpub.net/267265/viewspace-2122599/ Itl           Xid  ...
690 0
|
存储 Oracle 关系型数据库
[20160726]行链接行迁移与ITL槽.txt
[20160726]行链接行迁移与ITL槽.txt 当表中一行的数据不能在一个数据block中放入的时候,这个时候就会发生两种情况,一种是行链接(Row Chaining),另外一种就是行迁 移(Row Migration)了。
663 0
|
Oracle 关系型数据库 数据库管理
[20160526]bbed修改数据记录(不等长).txt
[20160526]bbed修改数据记录(不等长).txt --以前做的测试,有点乱,当时没有很好的理解快速提交.而且做的很乱,链接如下: http://blog.
904 0