• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    oracle区管理和段空间管理详细介绍
    POST TIME:2021-10-18 22:21

    作为一名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指定

    上一篇:oracle中截断表的使用介绍
    下一篇:Oracle date如何比较大小分析
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信