Oracle数据块

      数据块(Block)-------(最小i/o单位)

      是最小的数据管理单位,是执行输入输出操作时的最小单位。

      Oracle的数据块是操作系统数据块大小的整数倍。

      Oracle取数据时,总是获取整个数据块。

      数据库中标准的数据块(data block)容量是由初始化参数 DB_BLOCK_SIZE 指定的

1、数据块的组成

     块头部:包含块中一般的属性信息(块的物理地址、所属段的类型等)

     表目录:如果块中存储的是表数据,则表目录存储关于表的信息

     行目录:存储该块中有效的行信息

     空闲空间:数据块中尚未使用的存储空间

     行空间:  块中已经使用的存储空间,存储表或索引的数据。

2、查看数据块的大小

    

show parameter db_block_size
select value from v$parameter where name='db_block_size'

3、Oracle数据文件大小的限制

1、默认创建表空间时BLOCKSIZE 是8k,文件最大是32G
2、可以把BLOCKSIZE设置为16k,

      SQL〉alter system set db_16k_cache_size=34603008;这样一个表空间datafile最大可以到64G

3、可以把BLOCKSIZE设置为32k,这样一个表空间datafile最大可以到128G

    

       在oracle11g中引进了bigfile表空间,他充分利用了64位CPU的寻址能力,使oracle可以管理的数据文件总量达到8EB。单个数据文件的大小达到128TB,即使默认8K的db_block_size也达到了32TB。创建bigfile的表空间使用的sql语句也很简单。create bigfile tablespace...后面的语句和普通的语句完全一样。

Oracle数据文件的大小存在一个内部限制:每个数据文件最多只能包含2^22-1个数据块。

这个限制也就直接导致了每个数据文件的最大允许大小。

        在2K Block_size下,数据文件最大只能达到约8G

        在32K的Block_size下,数据文件最大只能达到约16*8G的大小。

这个限制是由于Oracle的Rowid中使用22位来代表Block号,这22位最多只能代表2^22-1个数据块。

       为了扩展数据文件的大小,Oracle10g中引入了大文件表空间,在大文件表空间下,Oracle使用32位来代表Block号,也就是说,在新的技术下,大文件表空间下每个文件最多可以容纳4G个Block。那么也就是说当Block_size为2k时,数据文件可以达到8T。当block_size为32K时,数据文件可以达到128T。当然这一限制和操作系统有关。

补充:

1、区(extent)---(最小空间分配单位

      是物理上连续存放的块。区是Oracle存储分配的最小单位,块是最小I/O单位。

      一个或多个块组成区,一个或多个区组成段

     

参考:http://zhangyafeng0917.blog.163.com/blog/static/44436412201401811217598/

猜你喜欢

转载自768992698.iteye.com/blog/2261346