ORACLE_OCP之管理ORACLE的存储结构

广告位

    ORACLE_OCP之管理ORACLE的存储结构 一、表数据的存储方式 创建表时,…

 

 

ORACLE_OCP之管理ORACLE的存储结构

一、表数据的存储方式

ORACLE_OCP之管理ORACLE的存储结构

  • 创建表时,将创建一个段来保存其数据。 表空间是段的集合。
  • 逻辑上,表包含列和行。 最终,一行数据以行片段的形式存储在数据库块中。 之所以称其为“一行数据”,是因为在某些情况下,整行可能不会存储在一个地方。 当插入的行太大而无法放入单个块(行链接)时,或者当更新导致现有行超出了当前块(行迁移)的可用空间时,就会发生这种情况。 当一个表具有超过255个列时,也使用行片段。 在这种情况下,这些片段可能位于同一块中(块内链接)或跨多个块。
1. 数据块结构

ORACLE_OCP之管理ORACLE的存储结构

  • 块头(Block header):块头包含段类型(例如表或索引),数据块地址,表目录,行目录以及每个大约23个字节的事务槽(ITL),在对块中的行进行事务修改时使用。 块头从顶部向下生长。
  • 行数据:这是块中行的实际数据。 行数据空间从底部开始向上增长。
  • 可用空间:可用空间位于块的中间,在必要时可以使块头和行数据空间增加。 当插入新行或使用更大的值更新现有行时,行数据会占用可用空间。 并且根据实际操作发生行迁移或行链接。FREE SPACE默认大小为块的20%。
  • 导致块头增长的事件示例:
    • 需要更多行条目的行目录
    • 比初始配置需要更多的事务记录位置
  • 最初,块中的可用空间是连续的。 但是,删除和更新可能会使块中的可用空间碎片化。 必要时,Oracle会合并块中的可用空间。
1. 表空间
  • 有哪几种表空间:
    • ORACLE的表空间分为三种:
      • 持久(永久)表空间:由持久(永久)段构成,SYSTEM SYSAUX 用户自己创建的表空间都是持久表空间。
      • 临时表空间:由临时段构成,系统自带TEMP表空间就是临时表空间。
      • UNDO(撤销)表空间:有ROLLBACK段(回滚段、RBS段)构成,系统自带的UNDOTBS1表空间就是UNDO表空间。
  • 创建表空间:
    • 查看数据文件路径()

      SQL> SELECT NAME FROM V$DATAFILE;
      ORACLE_OCP之管理ORACLE的存储结构

    • 区(extent)分配:
      • 自动:也称为自动分配,它指定表空间中的区大小由系统管理。 您不能为临时表空间指定“自动”。
      • 统一:它指定使用指定大小区来管理表空间。 默认大小为1 MB。 临时表空间的所有范围都是统一的。 您不能为UNDO表空间指定统一大小。
    • 日志记录:LOGGING子句为表空间中创建的任何段设置默认日志记录值。 对表空间中的对象所做的更改将写入重做日志。 如果未启用日志记录,则使用SQL * Loader进行的任何直接加载的INSERT操作都不会写入重做日志,因此,如果丢失数据,则无法恢复对象。 创建未启用日志记录的对象时,如果希望它们可恢复,则必须备份这些对象。 选择不启用日志记录可能会对将来恢复对象的能力产生重大影响。 请谨慎使用。 有关日志记录子句的更多详细信息,请参见《 Oracle数据库SQL参考》。

    注意:如果FORCE LOGGING模式对数据库有效,则它优先于表空间日志记录设置。 在数据库创建时或使用ALTER DATABASE FORCE LOGGING命令创建数据库后,可以将数据库置于FORCE LOGGING模式。

    • 压缩选项:默认情况下,数据段压缩是禁用的。 启用数据段压缩可以节省磁盘空间使用,减少DB_BUFFER_CACHE的内存使用,并加快读取期间的查询执行速度。 但是,用于数据加载和DML的CPU开销会有所增加。
    • 它在在线分析处理(OLAP)系统中特别有用,该系统中存在冗长的只读操作,但也可以在在线事务处理(OLTP)系统中使用。
    • 有关何时使用压缩子句的更多详细信息,请参见《 Oracle数据库管理员指南》。

二、默认自带的表空间

  • EXAMPLE (optional)
  • SYSAUX
  • SYSTEM
  • TEMP
  • UNDOTBS1
  • USERS

三、Altering a Tablespace(修改表空间)

  • 脱机(OFFLINE):您可以使联机表空间脱机,以使数据库的此部分暂时不可用以读写使用。 数据库的其余部分不受影响,可继续供用户访问数据等。
  • 脱机使用时,可以使用以下选项:
    • 正常:如果表空间的任何数据文件都没有错误条件,则该表空间可以正常脱机。 Oracle数据库通过在表空间的所有数据文件脱机时为其设置检查点来确保将所有数据写入磁盘。
    • 临时:即使某个表空间的一个或多个文件存在错误,也可以使该表空间暂时脱机。 Oracle Database使尚未脱机的数据文件脱机,从而对它们执行检查点。如果没有文件处于脱机状态,但是您使用Temporary子句,则不需要介质恢复就可以使表空间恢复联机状态。
      但是,如果表空间的一个或多个文件由于写入错误而脱机,并且您使该表空间暂时脱机,则该表空间需要恢复,然后才能使其重新联机。
    • 立即:表空间可以立即脱机,而Oracle数据库无需在任何数据文件上设置检查点。当您指定立即时,必须先恢复表空间的介质,然后才能使表空间联机。如果数据库以NOARCHIVELOG模式运行,则不能使用立即脱机。

 

剪烛西窗, 程

关于作者: 剪烛西窗

为您推荐