1.数据块是oracle逻辑存储结构中最小的存储单元,也是最小的数据库I/O单元。
2.oracle数据块和操作系统块的关系:
从物理层面,一个数据块由多个操作系统块组成,但是oracle数据块为oracle特有的逻辑单元,当oracle进行数据块的读取和写入时,会将读取或写入操作转化成对操作系统的读取和写入操作。
区别:
建立在oracle数据库上的应用,并不需要知道具体的操作系统块地址。、
数据块可以在多个操作系统磁盘上进行冗余备份。
3.数据块大小
数据块大小一般为操作系统块大小的整数倍,可以为2K/4K/8K/16K/32K。当然块大小也与操作系统块大小有关。
在数据库中可以通过DB_BLOCK_SIZE查看数据库块大小,当一个数据库创建完成,数据块的大小就已经确定,并且不能修改。
当然,在创建表空间时,也可以支持表空间中数据块使用非默认大小的数据块,但是只能为默认的数据块大小的整数倍。
4.非压缩的数据块格式
block header : common and variable header
主要包括操作系统磁盘地址(disk address)、段类型(segment type)和事务信息(active and historical transaction)
table directory:
主要描述在数据块中都存放了哪些表的数据
row directory:
如果是堆表的话,描述了记录在数据块里的位置
free space
row data
5.记录片段(row pieces)的格式
oracle存储行记录是以变长的方式来进行的,每条记录包含了一份或者多份记录片(row piece)。
row piece主要包括row header和column data.
其中,row header包括:
row overhead
number of columns
cluster key ID(if clustered)
ROWID of chained row pieces(if any):如果发生了行链接,则需要记录下一条记录的ROWID。
column length:由于oracle支持可变长度的数据类型,所以oracle将数据的长度和数据的值分开存放。
column value:列的具体值
其次,column data,包括了真实的行记录数据。每条记录在row header上都有一个记录槽,指向了记录所在位置。
6.ROWID的格式
ROWID值由四部分组成:数据对象编号,表空间里的相对文件编号,数据块编号和行编号
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30167136/viewspace-1513025/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30167136/viewspace-1513025/