广

oracle数据库

  • MYSQL
  • MSSQL
  • Redis
  • MongoDB
  • oracle数据库
  • 数据管理

    oracle区管理和段空间管理详细介绍

    2018-05-07 10:24:45 次阅读 稿源:互联网
    广告
    全网推广平台,软文发布

    作为一名DBA,常见的一个场景之一:

    创建表空间:
    代码如下:

    createtablespaceThink
    datafile'/u01/app/oracle/oradata/orcl/think.dbf'size100M
    autoextendonnext10Mmaxsize4096M
    extentmanagementlocaluniformsize256K
    segmentspacemanagementauto;

    创建用户:
    代码如下:

    createuserbin
    defaulttablespaceThink
    temporarytablespacetemp;

    授予权限:
    代码如下:

    grantconnect,resourcetobin;
    revokeunlimitedtablespacefrombin;
    alteruserbinquotaunlimitedonThink;

    在这个场景中,有两条语句:
    ①extentmanagementlocaluniformsize256K
    ②segmentspacemanagementauto
    其中,前者是区管理;后者则是段空间管理

    ㈠区管理
    区管理实际上就是表空间的管理
    8i以前,是字典管理表空间,当创建或删除对象时,Oracle的空间分配或回收是通过数据字典来记录和管理
    在高并发系统中,这会导致性能衰减、空间碎片等难题
    这已经是门过去的技术,这里就不赘述了。
    8i开始,Oracle引入本地表空间管理
    在每个表空间的数据文件的头部加入了一个位图区域
    一个段的第一个区的第一个块是firstlevelbitmapblock
    第二个块是secondlevelbitmapblock
    第三个块才是段头块
    这两个块是用来管理freeblock

    语法:
    代码如下:

    extentmanagementlocal{autoallocate|uniformsizenK/M}

    是自动分配还是统一尺寸
    若为自动分配,则Oracle会按照递增算法来分配空间
    如果选择统一尺寸,还可以详细指定每个区间的大小
    dba_extents这个视图可以看到哪些对象分配了多少区间

    ㈡段空间管理
    Oracle以区间为单位将空间分配给对象段,而段内则是以block为单位进行空间使用和管理
    我们以几个参数来理解段空间管理
    代码如下:

    [sql]
    <spanstyle="font-size:18px;">sys@ORCL>selectextent_management,segment_space_managementfromdba_tablespaces;
    EXTENT_MANSEGMEN
    ----------------
    LOCALMANUAL
    LOCALMANUAL
    LOCALAUTO
    LOCALMANUAL
    LOCALMANUAL

    从9i开始,段空间管理有两种:
    ①MSSM:由你设置freelists、freelistgroups、pctused、pctfree、initrans等参数来控制如何分配、使用段中的空间
    ②ASSM:你只需控制一个参数pctfree,其他参数即使建了也将被忽略
    ⑴freelist
    使用MSSM表空间管理时,Oracle会在freelist中为有自由空间的对象维护HWM以下的块
    freelist和freelistgroup在ASSM表空间中根本不存在,仅在MSSM表空间使用这个技术
    ⑵pctfree和pctused
    pctfree告诉Oracle:块上应该保留多大的空间来完成将来的更新
    对于MSSM,她控制着块何时放入freelist中,以及何时从freelist中取出。
    如果大于pctfree,则这个块会一直在freelist上
    对于ASSM,因为ASSM根本不使用freelist。在ASSM中,pctused也将被忽略。
    但她仍然会限制能否将一个新行插入到一个块中
    适当的设置pctfree有助于减小行迁移
    ⑶initrans
    无论是ASSMorMSSM这个参数仍然有效
    块头的事务槽的初始化大小有对象的initrans指定

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告
    广告