Oracle数据库表空间,段,区详解
一、 ORACLE表空间管理
ORACLE通过表空间为数据库提供使用空间。由于区(extent)是ORACLE创建对象时的最小分配单元, 所以表空间的管理实际上就是针对于区间的管理。
ORACLE表空间的管理方式分为:
1.1 字典管理方式(DMT):使用数据字典管理存储空间的分配, 当表空间分配新的区, 或者回收已分配的区时, ORACLE会对数据字典对应的表进行查询、更新, 且使用单线程, 速度慢, 并且产生回退和重做信息。
1.2 本地管理方式(LMT):表空间中区分配和区回收的管理信息都被存储在表空间的数据文件中, 而与数据字典无关。表空间为每个数据文件维护一个位图结构, 用于记录表空间的区分配情况。 当表空间分配新的区, 或者回收已分配的区时, ORACLE会对文件中的位图进行更新, 所以不会产生回滚和重做信息。
本地管理方式优点: 提高存储管理的速度和并发性。不产生磁盘碎片。不产生递归管理。 没有系统回滚段。
二、 ORACLE段管理
ORACLE以区为单位将空间分配给对象段, 而段内则是以BLOCK为单位进行空间使用和管理。
ORACLE段的管理分为:
2.1 手动段空间管理(Manual Segment Space Management):手动设置FressLists、FreeList Groups、PctUsed、其它参数来控制如何分配、使用、重用段空间。 许多版本都支持MSSM。
2.2 自动段空间管理(Automatic Segment Space Management):只需要控制与空间使用相关的PctFree, 其它参数被忽略。 ASSM只有在9i版本后才被引入, 用于减少MSSM中的太多参数的管理。应用于ASSM段的存储设置只有Buffer_Pool、PctFree、IniTrans、MaxTrans(10g后的版本都会忽略这个参数), 其它存储和物理属性参数都不适用于ASSM段。
2.3 HWM高水平线
。。。。。。。。。