oracle段管理分析
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle段管理分析相关的知识,希望对你有一定的参考价值。
参考技术A( )段 区段 块
Oracle中的段segment是占用磁盘存储空间的一个对象 从逻辑上讲一个数据库由若干表空间(TABLESAPCE)组成 每个表空间有若干个表(TABLE) 每个表又可以分为若干数据段(DATA SEGMENT) 索引段等 每个段又可分为若干数据库区间(EXTENT) 每个区间由若干数据块(BLOCK)组成 区段(EXTENT)是最小的分配单 块(BLOCK) 是最小的存储单位
( )常见的段类型
聚簇cluster 分为散列聚簇和B*树聚簇 通常用于存储多个表上的相关数据
可以在聚簇段中建表 此时这个表可能与其它表同在一个聚簇段中
表table 表段用于保存一个数据库表的数据 是最常用的段类型 通常与索引段结合使用
表分区partition或子分区subpartition 主要用于分区 与表段类型
索引index 这种段类型用于保存索引结构
Lob分区 子分区 索引 Lob段 用于保存大对象的结构 每个LOB列需要分别创建两个段 一个用于存储CLOB或BLOB的
实际数据块logsegment 另一个是用于跟踪这些LOB块在哪里的lobindex
嵌套表nested table 这是为嵌套表指定的段类型
回滚段 用于存放undo的数据
( )段的管理
手动段空间管理Manual Segment Space Management
手动设置FreeLists FreeList Groups PctUsed 其它参数来控制如何分配 使用 重用段空间 MSSM是oracle的遗留实现 许多版本都支持MSSM
自动段空间管理Automatic Segmnet Space Management
只需要控制与空间使用相关的PctFree 其它参数被忽略 ASSM只有在 i版本后才被引入 用于减少MSSM中的太多参数的管理
应用于ASSM段的存储设置只有Buffer_Pool PctFree IniTrans MaxTrans( g后的版本都会忽略这个参数) 其它存储和物理属性参数都不适用于ASSM段
段空间管理是从段的表空间继承来的一个属性 而且段都没有跨表空间 段要使用ASSM就必须位于支持ASSM空间管理的表空间中
HWM高水平线
HWM是随着表数据的增长而增长的 只有重建 截除 收缩对象时 HWM才会降低 HWM很重要 因为在oracle进行全表扫描时会扫描HWM下的所有块 即使这张数据库表不包含任何数据
TrunCate会把表的HWM重新置为 还会截除表上的相关索引 而DELETE整张表时并没有修改HWM 所以如果打算删除表的所有行 应尽量使用TrunCate
在MSSM表空间中 段只有一个HWM 但在ASSM表空间中 除了HWM外 还有一个低HWM 这是因为在ASSM中 HWM推进时 ORACLE并没有立即格式化所有的物理块 而是只在第一次使用时才会完成格式化 以便安全读取
freelists
freelists是使用MSSM表空间时 oracle使用块时 需要把块放在freelist或从freelist中删除 freelists可能对性能有很大的提升或有很大的影响
而在ASSM中 没有也不用去设置freelist参数
create tablespace as *** datafile size m autoextend on next m segment space management auto;
create table xxx( ) tablespace as *** ;
( )pctfree与pctused
PctFree告诉oracle应该在块上保留多少空间来完成将来的更新 默认值是 % 如果自由空间的百分比高于PctFree指定值 这个块就称为自由的 PctUsed告诉oracle应在当前不自由的块上自由空间的百分比需要达到多大时 才能使它再次变为自由的 默认值为 %
使用MSSM 时 这两个参数设置控制着块何时放入freelist 中 以及何时从freelist 中取出 如果使用默认值 PCTFREE为 PCTUSED为 那么在块到达 %满之前(有 %以上的自由空间) 这个块会一直在freelist 上 一旦到底 % 就会从freelist 中取出 而且直到块上的自由空间超过了块的 %时 才会重新回到freelist上 在此之前 这个块一直不在freelist上
使用ASSM 时 PCTFREE 仍然会限制能否将一个新行插入到一个块中 但是它不会控制一个块是否在freelist上 因为ASSM根本不使用freelist 在ASSM 中 PCTUSED参数将被忽略
如果把块的PCTFREE 设置得过高 就会浪费空间 如果把PCTFREE 设置为 % 而你从未更新数据 那么每个块都会浪费 %的空间 不过 对行初始很小 现在想将行的大小加倍 这种情况下 %的设置就非常合理 但是倘若PCTFREE 设置得太小 更新行时就会导致行迁移
高PCTFREE 低PCTUSED
如果你插入了将要更新的大量数据 而且这些更新会频繁地增加行的大小 此时就适合采用这种设置 这种设置在插入后会在块上预留大量的空间(高PCTFREE) 并使得将块放回到freelist 之前必须几乎为空(低PCTUSED)
低PCTFREE 高PCTUSED
如果你只想对表完成INSERT 或DELETE 或者如果你确实要完成UPDATE 但UPDATE 只是缩小行的大小 此时这种设置就很适合
( )行迁移row migration
lishixinzhi/Article/program/Oracle/201311/17472
Oracle存储结构深入分析与管理_超越OCP精通Oracle视频教程培训07
课程目标
Oracle视频教程,风哥本套oracle教程培训学习BBED、数据块,内容包括Oracle数据存储结构的深入分析,表空间(tablespace),段(segments),区(Extent),数据库块( Database Block),表,索引,SYSTEM与SYSAUX及temp临时表空间的日常管理与维护。
适用人群
IT相关从业人员、Oracle数据库技术人员、想加工资的、想升职的都可以。
课程地址:
http://edu.51cto.com/course/course_id-3899.html
课程简介
本课程介绍:
Oracle视频教程,风哥本套oracle教程培训学习BBED、数据块,内容包括Oracle数据存储结构的深入分析,表空间(tablespace),段(segments),区(Extent),数据库块( Database Block),表,索引,SYSTEM与SYSAUX及temp临时表空间的日常管理与维护。详细如下:
熟悉数据库的存储结构及表空间与数据文件的关系
表空间的定义与默认表空间介绍
段(segments)的定义/类型/了解段的创建与分配情况
区(Extent)的介绍及区是如何分配的?
数据库块( Database Block)的介绍及Orcale是如何管理数据存储的
数据库块( Database Block)的基本结构与数据块深入分析
BBED分析数据库块( Database Block)结构与修改数据块
BBED处理断电后数据块不一致的ORA报错
表的概念/类型/创建/使用规则
Rowid字段类型与结构的分析
临时表的功能与应用
表的行迁移与链接
索引功能与分类
索引的创建与索引日常维护操作
表空间的创建/日常维护管理/性能与安全
表空间与数据安全的问题及案例
DDL/DML/DCL的理解与表空间创建相关参数说明
表空间性能与非标准块大小的表空间创建
表空间的迁移过程(数据文件与对象)
表空间维护与状态检查
Oracle 管理的文件(OMF)
SYSTEM与SYSAUX表空间满了怎么办?
临时表空间满时的处理方法?
默认临时表空间TEMP的过大的处理办法
本文出自 “Oracle数据库教程” 博客,请务必保留此出处http://oracle13c.blog.51cto.com/8020378/1879759
以上是关于oracle段管理分析的主要内容,如果未能解决你的问题,请参考以下文章