WEB开发网
开发学院数据库Oracle Oracle中行迁移和行链接的清除及检测 阅读

Oracle中行迁移和行链接的清除及检测

 2007-05-06 12:05:55 来源:WEB开发网   
核心提示: 具体我们通过下面的一个试验来查看行链接和行迁移是如何产生并在数据文件中体现出来的,先查看ALLAN这个表空间的数据文件号,Oracle中行迁移和行链接的清除及检测(3),为了便于测试,我只建立了一个数据文件,这样一行记录大约10K,就能超过一个block的大小了,然后插入一行记录,SQL&

具体我们通过下面的一个试验来查看行链接和行迁移是如何产生并在数据文件中体现出来的。先查看ALLAN这个表空间的数据文件号,为了便于测试,我只建立了一个数据文件。

SQL> select file_id from dba_data_files where tablespace_name='ALLAN';
FILE_ID
----------
23

创建一个测试表test:

SQL> create table test ( x int primary key,
a char(2000), b char(2000), c char(2000),
d char(2000), e char(2000) ) tablespace allan;
Table created.

因为我的数据库的db_block_size是8K,所以我创建的表有五个字段,每个占2000个字节,这样一行记录大约10K,就能超过一个block的大小了。

然后插入一行记录,只有一个字段的:

SQL> insert into test(x) values (1);
1 row created.
SQL> commit;
Commit complete.

查找这行记录所在的block,并dump出来:

SQL> select dbms_rowid.rowid_block_number(rowid) from test;
DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)
34
SQL> alter system dump datafile 23 block 34;
System altered.

在udump目录下查看trace文件的内容如下:

Start dump data blocks tsn: 34 file#: 23 minblk 34 maxblk 34
buffer tsn: 34 rdba: 0x05c00022 (23/34)
scn: 0x0000.013943f3 seq: 0x01 flg: 0x02 tail: 0x43f30601
frmt: 0x02 chkval: 0x0000 type: 0x06=trans data
Block header dump: 0x05c00022
Object id on Block? Y
seg/obj: 0x3ccd csc: 0x00.13943ef itc: 2 flg: O typ: 1 - DATA
fsl: 0 fnx: 0x0 ver: 0x01
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x000a.02e.00000ad7 0x00800036.03de.18 --U- 1 fsc 0x0000.013943f3
0x02 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000
data_block_dump,data header at 0xadb505c
tsiz: 0x1fa0
hsiz: 0x14
pbl: 0x0adb505c
bdba: 0x05c00022
76543210
flag=--------
ntab=1
nrow=1
frre=-1
fsbo=0x14
fseo=0x1f9a
avsp=0x1f83
tosp=0x1f83
0xe:pti[0] nrow=1 offs=0
0x12:pri[0] offs=0x1f9a
block_row_dump:
tab 0, row 0, @0x1f9a
tl: 6 fb: --H-FL-- lb: 0x1 cc: 1
col 0: [ 2] c1 02
end_of_block_dump
End dump data blocks tsn: 34 file#: 23 minblk 34 maxblk 34

对其中的一些信息做一些解释:

上一页  1 2 3 4 5 6 7 8  下一页

Tags:Oracle 中行 迁移

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接