Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1705856
  • 博文数量: 136
  • 博客积分: 10021
  • 博客等级: 上将
  • 技术积分: 3261
  • 用 户 组: 普通用户
  • 注册时间: 2007-01-22 11:26
文章分类

全部博文(136)

文章存档

2010年(1)

2009年(26)

2008年(109)

我的朋友

分类: Oracle

2008-05-09 08:59:45

《Concept Guide》中提供了一个图:
 
各部分的解释如下:
Header (Common and Variable)
包含该块的总信息,例如块地址,还有该段的类型(数据或是索引)。
 
Table Directory
包含该块中数据所在的表的信息。
 
Row Directory
包含该块中的行的信息(例如每个 row piece 的地址)。
数据块头的 row directory 空间一但分配后,当行被删除(delete)后,对应的 row directory 中的空间不会被同时收回。因此,就可能出现一个数据块是空的,但在块头的 row directory 中,记录了50行信息,占用100 bytes。仅当有新的行插入该数据块时,Oracle 才会重用该空间。
 
Overhead
header, table directory, 和 row directory 共同组成 overhead。数据块的 overhead 中,有些是固定大小的;总的 overhead 大小是可变的。平均来说,数据块头的 overhead 部分的 固定大小部分 和 可变大小部分 占用 84 bytes 至 107 bytes。
 
Row Data
包含表或索引的实际数据。行可以跨块存储。
 
Free Space
用来存储插入的新行,或已有行的更新(需要更多的空间来存储数据)。数据块的空闲空间大小和参数 PCTFREE 共同决定该块中是否可以再插入数据。
In data blocks allocated for the data segment of a table or cluster, or for the index segment of an index, free space can also hold transaction entries. A transaction entry is required in a block for each INSERT, UPDATE, DELETE, and SELECT...FOR UPDATE statement accessing one or more rows in the block. The space required for transaction entries is operating system dependent; however, transaction entries in most operating systems require approximately 23 bytes.
 
 
我们dump一个数据块看看:

 

SQL> select b, rowid from test3;

 

         B ROWID
---------- ------------------
       666 AAAHaFAALAAAADiAAA
       666 AAAHaFAALAAAADiAAB
       666 AAAHaFAALAAAADiAAC
       666 AAAHaFAALAAAADiAAD
       666 AAAHaFAALAAAADiAAE
       666 AAAHaFAALAAAADiAAF
       666 AAAHaFAALAAAADiAAG
       666 AAAHaFAALAAAADiAAH

 

已选择8行。

 

SQL> exec my_tool.show_rowid('AAAHaFAALAAAADiAAA');
Rowid Type..............................1
Object Number...........................30341
Relative Fno............................11
Block Number............................226
Row Number..............................0

 

PL/SQL 过程已成功完成。

 

SQL> alter system dump datafile 11 block 226;

 

系统已更改。

 

SQL> select p.value||'\'||i.instance_name||'_ora_'||p.spid||'.trc' trace_path
  2  from v$process p, v$instance i, v$parameter p
  3  where p.addr = (
  4  select paddr from v$session
  5  where sid = ( select sid from v$mystat where rownum = 1)
  6  )
  7  and p.name='user_dump_dest';

 

TRACE_PATH
------------------------------------------------------------------
D:\oracle\admin\ora\udump\orasid_ora_1648.trc

 

SQL>

 

 

下面是文件中的信息: 

*** 2008-05-03 07:15:18.000

Start dump data blocks tsn: 11 file#: 11 minblk 226 maxblk 226

-- Header

buffer tsn: 11 rdba: 0x02c000e2 (11/226)

scn: 0x0000.1bda33c7 seq: 0x01 flg: 0x02 tail: 0x33c70601

frmt: 0x02 chkval: 0x0000 type: 0x06=trans data

-- Table Directory
Block header dump:  0x02c000e2

 Object id on Block? Y

 seg/obj: 0x7685  csc: 0x00.1bda33c0  itc: 3  flg: O  typ: 1 - DATA

     fsl: 0  fnx: 0x0 ver: 0x01

 

 Itl           Xid                  Uba         Flag  Lck        Scn/Fsc

0x01   0x0003.00d.00003ba5  0x00800ae8.0175.08  C---    0  scn 0x0000.1b6f4a62

0x02   0x0001.01c.00004c12  0x008000da.02c4.0a  --U-    8  fsc 0x0000.1bda33c7

0x03   0x0006.011.00003c5a  0x008003bb.01bc.11  C---    0  scn 0x0000.1b6f4a11

 

-- Row Directory

data_block_dump,data header at 0x3051074

===============

tsiz: 0x1f88

hsiz: 0x22

pbl: 0x03051074

bdba: 0x02c000e2

     76543210

flag=--------

ntab=1

nrow=8

frre=-1

fsbo=0x22

fseo=0x1ec0

avsp=0x1f1e

tosp=0x1f1e

0xe:pti[0] nrow=8   offs=0

0x12:pri[0]     offs=0x1eff

0x14:pri[1]     offs=0x1ef6

0x16:pri[2]     offs=0x1eed

0x18:pri[3]     offs=0x1ee4

0x1a:pri[4]      offs=0x1edb

0x1c:pri[5]     offs=0x1ed2

0x1e:pri[6]      offs=0x1ec9

0x20:pri[7]     offs=0x1ec0

-- Row Data

block_row_dump:

tab 0, row 0, @0x1eff

tl: 7 fb: --H-FL-- lb: 0x2  cc: 1

col  0: [ 3]  c2 07 43

tab 0, row 1, @0x1ef6

tl: 7 fb: --H-FL-- lb: 0x2  cc: 1

col  0: [ 3]  c2 07 43

tab 0, row 2, @0x1eed

tl: 7 fb: --H-FL-- lb: 0x2  cc: 1

col  0: [ 3]  c2 07 43

tab 0, row 3, @0x1ee4

tl: 7 fb: --H-FL-- lb: 0x2  cc: 1

col  0: [ 3]  c2 07 43

tab 0, row 4, @0x1edb

tl: 7 fb: --H-FL-- lb: 0x2  cc: 1

col  0: [ 3]  c2 07 43

tab 0, row 5, @0x1ed2

tl: 7 fb: --H-FL-- lb: 0x2  cc: 1

col  0: [ 3]  c2 07 43

tab 0, row 6, @0x1ec9

tl: 7 fb: --H-FL-- lb: 0x2  cc: 1

col  0: [ 3]  c2 07 43

tab 0, row 7, @0x1ec0

tl: 7 fb: --H-FL-- lb: 0x2  cc: 1

col  0: [ 3]  c2 07 43

end_of_block_dump

End dump data blocks tsn: 11 file#: 11 minblk 226 maxblk 226

 

阅读(1825) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~