逻辑组件——数据区以数据区的形式分配所有类型段的空间数据区由一定数目的相邻数据块组成,数据区的集合。创建表时,Oracle将一定数目的数据块组成的初始数据区分配给表的数据段

Oracle按下面方式对指定段新增数据区的分配进行控制:

  1. Oracle使用以下算法,通过可用空间(在包含该段的表空间中)搜索与新增数据区大小相同或更大的第一个可用的相邻数据块集:
  2. Oracle搜索的相邻数据块要与新增数据区上一个块的大小相匹配,这样可减小内部碎片的出现(如果必要,该大小将四舍五入到该表空间最小数据区大小)。
  3. 如果没有找到精确匹配值,Oracle将搜索比所需数量大的相邻数据块集。
  4. 如果Oracle没有找到大小相同或更大的相邻数据块集,则它将组合相应表空间中所有可用的相邻数据块,形成更大的相邻数据块集。组合完表空间的数据块后,Oracle将重新执行上述两条中描述的搜索。
  5. 如果第二次搜索完成后无法分配数据区,则Oracle将尝试通过自动扩展来调整文件的大小。
  6. 如果Oracle无法调整文件的大小,则返回一个错误。

一旦Oracle在表空间中找到并分配了必需的可用空间,则它将分配一部分与新增数据区大小相应的可用空间。如果Oracle找到了比数据区要求的可用空间大的可用空间,则Oracle将剩余部分保留为可用空间(5个或5个以上相邻块)。

Oracle更新段标题和数据字典,以显示新的数据区已经被分配,而分配的空间不再可用。