1 数据块头包括
* Block type
1=undo segment header, 2=undo segment block, 5=data segment header, 7=temporary table, 11=data file header, 14=Unlimited rollback segment header, 15=Unlimited deferred rollback segment header, 16=Unlimited data segment header, 17=Unlimited data segment header with FL groups, 18=Extent map block
* Block format
Is it an oracle 7 or oracle 8, (or 9, or 10???) formatted block?
* Relative database address
* SCN
* SCN sequence number
* Check value
Is used for integrity checking at the block level if db_block_checksum is set.
* Tail
The tail is not at the beginning of a block but at its end: it is used as a block consistency check. That is, the value must be equal to SCN + block type + SCN sequence number.
2 表目录
如果这个数据块中有某个表的行,则将记录这个表的信息
3 行目录
行的地址偏移(相当于指针)
每条记录占
2 字节(byte)空间
其他
1 、如果表中一行数据量太大会产生行链接,(生成一个指针指向其他包含相同行的数据的数据块,指针记录在行头的链接rowid中)
2 、当一个表超过 255 列时,每行第255列之后的数据将作为一个新的行片
断(row piece)存储在相同的数据块中,这被称为块内
链接(
当一个行为块内链接时,用户可
以从同一数据块中访问此行的全部数据。如果一个数据行位于同一数据
块内,那么访问此行不会影响 I/O 性能,因为访问此行不会带来额外的
I/O 开销
)
3 、列长存储
于列值之前,如列值不超过 250 字节,那么 Oracle 使用 1 字节存储
其列长;如列值超过 250 字节,则使用 3 字节存储其列长
4 、为了节约存储空间,如果某列值为空(null),那么数据库中只存储其
列长(column length)(值为 0),而不存储任何数据。对位于一行末
尾的空列值(trailing null column),数据库中将列长也忽略不予存
储(所以可能为null的列最好放在最后,这样可以节省空间)
段是如何管理数据块的
段管理方式
①ASSM:自动管理方式(BMB段:BitmapManagedSegments),使用位图管理段中的数据块空闲空间,大并发量。
②MSSM:手工管理方式(FreeList),使用空闲列表来管理段中的数据块空闲空间,串行操作容易引起段头的争用
①ASSM:自动管理方式(BMB段:BitmapManagedSegments),使用位图管理段中的数据块空闲空间,大并发量。
②MSSM:手工管理方式(FreeList),使用空闲列表来管理段中的数据块空闲空间,串行操作容易引起段头的争用