表空间中的磁盘空间管理

来源:互联网 发布:淘宝图片尺寸cm 编辑:程序博客网 时间:2024/06/08 17:06
在Oracle8和之前的版本中,所有表空间中的磁盘空间管理都是由数据字典来管理的。在这种管理方法中,所有的空闲区由数据字典来统一管理。每当区段被分配或回收时,Oracle服务器将修改数据字典中相应的(系统)表。
在数据字典管理的表空间中所有的extents的管理都是在数据字典中进行的。而且每一个存储在同一个表空间中的段可以具有不同的存储子句。数据字典管理的表空间中,可以按照需要修改存储参数。管理起来比较灵活,但是系统效率较低。如果使用这种管理方法,有时需要合并碎片。
  为了克服数据字典管理的弊端,在Oracle8i以后,引入了本地管理。
本地管理的表空间其空闲的extents是在表空间中管理的。它使用位图来记录空闲extents,位图中的每一位对应一块或一组块。而每位的值用来记录空闲或分配。当一个extent被分配或释放时,Oracle服务器会修改位图中相应位的值以反映extent的新的状态。位图存放于表空间所对应的数据文件的文件头中。
 使用本地管理的表空间减少了数据字典表的竞争。而且当磁盘空间分配或释放时不会产生回滚(还原),它也不需要合并碎片。在本地管理的表空间中,无法按照实际需要任意的修改存储参数。所以存储管理不想数据字典管理的表空间那样灵活,但是系统效率较高。
  正是为了系统的效率,因此,在Oracle8i之后,创建的表空间中,管理方式变为了本地管理。