整理自Oracle 11g R2 官方文档《concepts》

001
    Oracle 数据库必须使用逻辑空间管理在表空间中跟踪并分配扩展区。当数据库对象需要扩展区时,该数据库必须有查找和分配扩展区的方法。同样,当对象不再需要扩展区时,数据库必须提供一种方法来重用可用空间。
    Oracle 数据库基于您创建的表空间的类型来管理其中的空间。您可以创建下列类型的表空间之一:
        ·本地管理表空间 (默认值)
    数据库使用表空间本身中的位图来管理扩展区。因此,本地管理表空间需要预留表空间的一部分用于位图。在一个表空间中,数据库可以使用自动段空间管理(ASSM)或手动段空间管理(MSSM)来管理段。
        ·字典管理表空间
    数据库使用数据字典来管理扩展区。
图 12-3 显示了一个表空间中的逻辑空间管理方法的可选方案。
002 本地管理表空间
    本地管理表空间在数据文件头维护一个位图,以跟踪数据文件体中的可用空间和已用空间。每一位对应一组块。当空间被分配或释放时,Oracle 数据库更改位图值,以反映数据块的新状态。下面的图形是位图管理存储的概念表示。标头中的1是指已用空间,而0指可用空间。
本地管理表空间具有如下优势:
·避免使用数据字典来管理扩展区
    如果消耗或释放一个扩展区会导致在数据字典表或撤消段中消耗或释放空间,则在字典管理的表空间中会发生递归操作。
·自动跟踪相邻的可用空间
    通过这种方式,数据库消除了合并空闲扩展区的需要。
·自动确定本地管理扩展区的大小
    或者,在本地管理表空间中所有的扩展区可以具有相同的大小,并覆盖对象存储选项。
 注意:Oracle 强烈建议使用自动段空间管理的本地管理表空间。
003 段空间管理
    段空间管理是一个从包含该段的表空间继承来的属性在一个本地管理表空间中,数据库可以自动地或手动地管理段。例如,users 表空间中的段使用自动管理,而 tools 表空间中的段使用手动管理。
3-1 自动段空间管理(ASSM,automatic segment space management)
    ASSM 方法使用位图管理空间。位图提供了以下优点:
    ·简化管理
    ASSM 可以避免手动确定许多存储参数的正确设置的需要。只有一个很关键的控制空间分配的SQL 参数:PCTFREE。此参数指定要为块中保留用于将来的更新的空间百分比。
    ·增强并发性
 多个事务可以搜索多个相互独立的空闲数据块列表,从而减少争用和等待。对很多标准工作负载,使用 ASSM 的应用程序性能比使用优化得很好的使用 MSSM 的应用程序性能更好。
    ·对Oracle 真正应用集群(Oracle RAC)环境中实例的空间动态亲合性
    ASSM 更有效,并且是永久性本地管理表空间的默认值。
3-2 手动段空间管理(MSSM,manual segment space management)
    旧式的MSSM 方法使用称为空闲列表的链表来管理段中的可用空间。对一个具有可用空间的数据库对象,有一个空闲列表会跟踪位于高水位线 (HWM) 之下的数据块,所谓高水位,即已使用段空间和未使用段空间之间的分界线。当块被使用时,数据库根据需要将块放入空闲列表,或将块从空闲列表中删除。
    除了PCTFREE,MSSM 需要您使用额外的几个SQL 参数(如 PCTUSED、FREELISTS、和FREELIST GROUPS)来控制空间分配。PCTUSED设置在当前使用块中必须存在的可用空间百分比,当使用率低于该百分比时,数据库会将其放入空闲列表中。例如,如果CREATE TABLE 语句中设置PCTUSED为40,则只有当块空间使用少于40%的情况下, 您才能往段中的块插入新行。
    作为一个说明,假设向一个表中插入行。数据库检查该表的空闲列表,以查找第一个可用的块。如果行无法容纳进该块中,并在块中已使用空间大于或等于PCTUSED,则数据库将该块从空闲列表中移除,并搜索另一个块。如果从块中删除行,则数据库检查块中的已使用空间现在是否小于 PCTUSED。如果是,则数据库将该块置于空闲列表的开头。
    一个对象可能有多个空闲列表。通过这种方式,在表上执行DML 的多个会话可以使用不同列表,以减少争用。每个数据库会话在其会话持续时间只使用一个空闲列表。
    如图12-4 所示,你也可以创建具有一个或多个空闲列表组的对象,空闲列表组是空闲列表的集合。每个组有一个主空闲列表,用于管理组中的各个的处理空闲列表。空闲列表、尤其是空闲列表组的空间开销,可能非常显著。
    手动管理段空间可能会很复杂。您必须调整PCTFREE 和PCTUSED,以减少行迁移和避免空间浪费。例如,如果段中的每个使用的块是半满,并且PCTUSED 是40,则数据库不允许向这些块插入新行。由于微调空间分配参数很困难,Oracle 强烈建议使用ASSM。在ASSM中,由PCTFREE 确定是否可以将新行插入一个块中,但它不使用空闲列表,并忽略PCTUSED。
004 字典管理表空间
    字典管理表空间使用数据字典来管理其扩展区。每当分配或释放了一个扩展区时,Oracle 数据库更新数据字典中的表。例如,当表需要扩展区时,数据库查询数据字典表,并搜索空闲扩展区。如果数据库找到了空间,则修改一个数据字典表,并插入一行。按这种方式,数据库通过修改和移动数据来管理空间。
    数据库在后台为数据库对象获取空间而执行的SQL 是递归SQL。频繁使用递归SQL 可能会对性能有负面影响,因为必须串行化对数据字典的更新。而默认的本地管理表空间避免了这种性能问题。

Oracle逻辑空间管理相关推荐

  1. Oracle数据库空间管理

    创建表空间            create tablespace re_segs            datafile 'E:\Database\datashow.dbf'            ...

  2. Oracle PCTfree assm,Oracle 段空间管理方式与PCTFREE和PCTUSED的概念

    Oracle 段空间管理方式与PCTFREE和PCTUSED的概念 SQL> create table test11 (ID number(10),score number(10,1),name ...

  3. oracle实现分段,用Oracle分段空间管理功能改进数据库性能

    如果Oracle数据库表出现大量碎片数据,则会浪费磁盘空间和严重影响性能.这时可以使用Oracle分段空间管理功能,特别是Oracle数据库分段压缩功能. 更新或删除表的记录,会在数据块中形成许多的空 ...

  4. oracle表空间管理图形界面,Oracle表空间管理和优化

    Oracle 表空间管理和优化 1. TOM大神的表查询和授权语句create or replace procedure SHOW_SPACE(P_SEGNAME IN VARCHAR2, Oracl ...

  5. ORACLE表空间管理维护

    1:表空间概念 在ORACLE数据库中,所有数据从逻辑结构上看都是存放在表空间当中,当然表空间下还有段.区.块等逻辑结构.从物理结构上看是放在数据文件中.一个表空间可由多个数据文件组成. 如下图所示, ...

  6. oracle 表空间管理

    表空间是ORACLE数据库最高层次的逻辑存储结构,保存段.区.块,由一个或多个数据文件组成. 块的存储管理 块是ORACLE存储结构的最小单位.块大小分为标准数据块和非标准数据块 标准数据块由DB_B ...

  7. Oracle表空间管理和维护

    1 表空间概念 在ORACLE数据库中,所有数据从逻辑结构上看都是存放在表空间当中,当然表空间下还有段.区.块等逻辑结构.从物理结构上看是放在数据文件中.一个表空间可由多个数据文件组成.一个数据库由对 ...

  8. ArcSDE for Oracle表空间管理——暂时(TEMP)表空间

    Oracle暂时表空间主要用来做查询和存放一些缓冲区数据.暂时表空间消耗的主要原因是须要对查询的中间结果进行排序. 重新启动数据库能够释放暂时表空间,假设不能重新启动实例,而一直保持问题sql语句的运 ...

  9. 3、Oracle表空间管理

    表空间的管理类型: 数据字段管理的表空间(DMT) 本地化管理的表空间(LMT) 查询表空间是否是本地化管理方式,可以使用以下语句: 创建表空间,oracle将完成两个工作,一个在数据字典和控制文件, ...

最新文章

  1. Python代码选中文乱码
  2. dubbo协议_阿里P8架构师谈微服务架构:Dubbo+Docker+SpringBoot+Cloud
  3. oracle 统计一年中每个月数据总和_excel表格有每月数据 怎样统计全年的-用excel公式怎样计算每年每个月的数据总和?...
  4. c++ eos智能合约开发_干货|EOS智能合约开发(一)EOS环境搭建和启动节点
  5. tstringgrid 单元格区域获取_对合并单元格的序号填充还在一个个的手动录入?那就真的Out了!...
  6. Oracle数据库之对象视图、索引、序列、同义词
  7. 智能化服务器怎么调,怎么设置dns 智能dns设置方法 【图文】
  8. iOS工程师常用的命令行命令总结
  9. 第十二章 trie路由--基于Linux3.10
  10. 深入.NET编程 第十一章 影院售票系统
  11. nuget下载太慢的问题解决方案 多次尝试下载该 nupkg 均已失败解决方案
  12. 电脑录屏怎么录?3个方法,教你如何录制视频
  13. 利用Python制作王者战力查询以及皮肤查看软件
  14. Windows修改本地域名解析文件hosts
  15. gnutls_handshake() failed: A TLS packet with unexpected length was received
  16. Linux下看股票行情的绿色小软件
  17. 面试最常问的设计模式
  18. python绘制随机网络图形
  19. JAVA Io 流 字符流 编码表 编码和解码的方法
  20. 交换内存SWAP使用率90%

热门文章

  1. ajax传递多个base64,H5移动开发Ajax上传多张Base64格式图片到服务器
  2. python:字符串常用处理函数:
  3. Qt:opencv编译
  4. 全球及中国塑料制品行业发展形势及产量需求前景研究报告2021版
  5. 中国超细旦丝现状调研及投资前景评估报告2022-2028年版
  6. python程序后台运行的实现
  7. 富文本NSMutableAttributedString用法大全
  8. OC-Foundation框架
  9. - (NSString *)description
  10. ProgressDialog使用总结