zoukankan      html  css  js  c++  java
  • 关于ORACLE碎片的理解和解决办法

    ORACLE数据库是有TABLESPACE、SYSTEMSPACE和TEMPSPACE三部分表空间组成。
    在表空间下包含若干的段(SEGMENT),在段下包含若干的范围(EXTENT)和
    FREESPACE.在存储数据时,段会首先为自己初始化存储位置的范围,以便存
    储和寻找,并将存储位置的这段范围标记为1。

    因为存储数据的时候,段总是为自己寻找最大的范围,方便存储和寻找,
    在频繁的数据存储过后,范围和范围之间的狭小地带就存在了冗余范围,
    当段再为自己寻找最大的范围时,就要从众多的范围中寻找给自
    己的最大空隙范围,可想而知这个最大空闲范围的寻找要经过怎样漫长的遍历,
    因此在数据频繁的更新之后,空间中的冗余空间碎片将会有很多的。

    针对存储的原理和特性可以用以下办法解决:

    1、将范围标志都设置为1,因为SMON会周期性的自动将标志相同的位置合并为
    自己的最大范围,这样就减少了冗余碎片,提高了数据寻址的效率和存贮效率。
    改为1自动合并:alter tablespace users default storage(pctincrease 1)
    手动合并: alter tablespace users coalesce

    2、将数据压缩到一个范围的简单的方法是用正确的存贮参数将这个段重建,然后
    将旧表中的数据导入新表中,并将旧表删除。用EXPORT/IMPORT 能实现这个目的。
    先exp dps/dps file=MESDB.dmp compress=Y grants=Y indexes=Y
    然后再IMPORT进去。导出的表就是重建后最新的表和数据,范围也将是最大的范围。


     

  • 相关阅读:
    java第二次作业 数组和String类
    java第一次作业
    选择
    latex math
    sum的写法
    qt 4.8.5 vs 2012编译
    物联网笔记四:物联网网络及协议
    物联网学习笔记三:物联网网关协议比较:MQTT 和 Modbus
    物联网学习笔记二:物联网网关
    物联网学习笔记一:物联网入门的必备 7 大概念和技能
  • 原文地址:https://www.cnblogs.com/doc/p/1353465.html
Copyright © 2011-2022 走看看