`

oracle段管理分析(转)

阅读更多

这文章写得很好,很适合我这种初学都看所以就转了。

原文地址:http://blog.sina.com.cn/s/blog_555948f801008xxz.html

 

(1)段、区段、块
Oracle中的段segment是占用磁盘存储空间的一个对象。从逻辑上讲一个数据库由若干表空间(TABLESAPCE)组成,每个表空间有若干个表(TABLE),每个表又可以分为若干数据段(DATA SEGMENT),索引段等,每个段又可分为若干数据库区间(EXTENT),每个区间由若干数据块(BLOCK)组成。区段(EXTENT)是最小的分配单。块(BLOCK) 是最小的存储单位。

 

 

(2)常见的段类型
1聚簇cluster:分为散列聚簇和B*树聚簇,通常用于存储多个表上的相关数据。

              可以在聚簇段中建表,此时这个表可能与其它表同在一个聚簇段中。
2表table:表段用于保存一个数据库表的数据,是最常用的段类型,通常与索引段结合使用。
3表分区partition或子分区subpartition:主要用于分区,与表段类型。
4索引index:这种段类型用于保存索引结构。
5Lob分区、子分区、索引、Lob段:用于保存大对象的结构。每个LOB列需要分别创建两个段,
一个用于存储CLOB或BLOB的

                               实际数据块logsegment,另一个是用于跟踪这些LOB块在哪里的lobindex。
6嵌套表nested table,这是为嵌套表指定的段类型。
7回滚段,用于存放undo的数据。

 

 

(3)段的管理
3.1手动段空间管理Manual Segment Space Management

手动设置FreeLists、FreeList Groups、PctUsed、其它参数来控制如何分配、使用、重用段空间。MSSM是oracle的遗留实现,许多版本都支持MSSM。

 

3.2自动段空间管理Automatic Segmnet Space Management

只需要控制与空间使用相关的PctFree,其它参数被忽略。ASSM只有在9i版本后才被引入,用于减少MSSM中的太多参数的管理。


应用于ASSM段的存储设置只有Buffer_Pool、PctFree、IniTrans、MaxTrans(10g后的版本都会忽略这个参数),其它存储和物理属性参数都不适用于ASSM段。


段空间管理是从段的表空间继承来的一个属性,而且段都没有跨表空间,段要使用ASSM就必须位于支持ASSM空间管理的表空间中。


3.3HWM高水平线
HWM是随着表数据的增长而增长的;只有重建、截除、收缩对象时,HWM才会降低。HWM很重要,因为在oracle进行全表扫描时会扫描HWM下的所有块,即使这张数据库表不包含任何数据。


TrunCate会把表的HWM重新置为0,还会截除表上的相关索引,而DELETE整张表时并没有修改HWM,所以如果打算删除表的所有行,应尽量使用TrunCate。

 

在MSSM表空间中,段只有一个HWM。但在ASSM表空间中,除了HWM外,还有一个低HWM。这是因为在ASSM中,HWM推进时,ORACLE并没有立即格式化所有的物理块,而是只在第一次使用时才会完成格式化,以便安全读取。

 

3.4freelists

freelists是使用MSSM表空间时,oracle使用块时,需要把块放在freelist或从freelist中删除,freelists可能对性能有很大的提升或有很大的影响。

而在ASSM中,没有也不用去设置freelist参数:
create tablespace assm datafile size 10m autoextend on next 1m segment space management auto;
create table xxx(......) tablespace assm;

 


(4)pctfree与pctused
PctFree告诉oracle应该在块上保留多少空间来完成将来的更新,默认值是10%。如果自由空间的百分比高于PctFree指定值,这个块就称为自由的。PctUsed告诉oracle应在当前不自由的块上自由空间的百分比需要达到多大时,才能使它再次变为自由的,默认值为40%。


使用MSSM 时,这两个参数设置控制着块何时放入freelist 中,以及何时从freelist 中取出。如果使用默认值:PCTFREE为10,PCTUSED为40,那么在块到达90%满之前(有10%以上的自由空间),这个块会一直在freelist 上。一旦到底90%,就会从freelist 中取出,而且直到块上的自由空间超过了块的60%时,才会重新回到freelist上,在此之前,这个块一直不在freelist上。

 

使用ASSM 时,PCTFREE 仍然会限制能否将一个新行插入到一个块中,但是它不会控制一个块是否在freelist上,因为ASSM根本不使用freelist。在ASSM 中,PCTUSED参数将被忽略。


如果把块的PCTFREE 设置得过高,就会浪费空间。如果把PCTFREE 设置为50%,而你从未更新数据,那么每个块都会浪费50%的空间。不过,对行初始很小,现在想将行的大小加倍,这种情况下50%的设置就非常合理。但是倘若PCTFREE 设置得太小,更新行时就会导致行迁移。

 

高PCTFREE,低PCTUSED

如果你插入了将要更新的大量数据,而且这些更新会频繁地增加行的大小,此时就适合采用这种设置。这种设置在插入后会在块上预留大量的空间(高PCTFREE),并使得将块放回到freelist 之前必须几乎为空(低PCTUSED)。

 

低PCTFREE,高PCTUSED

如果你只想对表完成INSERT 或DELETE,或者如果你确实要完成UPDATE,但UPDATE 只是缩小行的大小,此时这种设置就很适合。

 

 

(5)行迁移row migration 

行迁移是指由于某一行变得太大,无法再与其余的行一同放在创建这一行的块中(块中已经放不下这一行),这就要求这一行离开原来的块。行迁移只会影响性能。

oracle的段管理

oracle的段管理

图10-3:原来的块上有1/7的自由空间,第4行也占用块上1/7的空间,现在假定想把第4行update为原来的两倍大小;
图10-4:此时,即使oracle合并了自由空间,自由空间还是小于第4行的当前大小,

        所有oracle并没有合并自由空间,块仍保持原样;
图10-5:由于容纳不了新第4行的大小,所以oracle会移动或迁移这一行。

        当然也不是简单移动,oralce必须留下一个转发地址(指针);

分享到:
评论

相关推荐

    Oracle Sql语句转换成Mysql Sql语句

    OracleSqlConvert4MysqlSqlTool.java这个源码工具,根据描述,应该是实现了自动读取Oracle SQL语句,分析其结构,并根据MySQL的语法规则进行转换,然后将转换后的SQL语句保存到指定的目标文件中。这个工具简化了手动...

    oracle内存全面分析

    总结,Oracle内存全面分析涉及SGA和PGA的结构、管理策略、分析方法及性能优化。理解这些知识点,有助于DBA优化数据库性能,保证系统的稳定运行。在实践中,需要结合具体环境和应用特点,持续监控和调整内存配置,以...

    Oracle数据库回滚段的故障分析与性能优化.pdf

    Oracle数据库回滚段的故障分析与性能优化 回滚段是 Oracle 数据库的重要组成部分,数据库的性能与回滚段息息相关。本文将针对数据库回滚段常见的故障进行系统的分析,结合实例提出相应的解决方案,并对数据库回滚段...

    oracle动态行转列

    Oracle的动态行转列技术,通过巧妙利用存储过程和动态SQL,为数据分析师和开发者提供了一种强大且灵活的数据转换工具。无论是对于初学者还是有经验的数据库管理员,掌握这一技能都将极大地提升数据处理的效率和效果...

    Oracle 项目管理

    1. **集成的财务管理**:Oracle项目管理支持项目预算的创建、跟踪和分析,以及成本的分配和结算,确保项目在财务上的健康运行。 2. **资源管理与优化**:通过Oracle项目管理,可以有效规划和调度人力资源,实现...

    oracle大数据分析方案

    Oracle大数据分析方案是针对海量数据处理和分析的一种高级策略,主要应用于企业级环境,帮助运维人员和深入研究Oracle数据库的专业人士提升数据管理效率和洞察力。Oracle作为一个强大的关系型数据库管理系统,其在...

    通用查询分析器(Oracle数据查询)

    通过通用查询分析器,无论是初学者还是经验丰富的DBA,都能够更有效地对Oracle数据库进行数据查询、分析和管理,提升工作效率,同时降低错误率。对于那些不熟悉SQL或者希望提升工作效率的用户来说,这类工具无疑是...

    Oracle 内存全面分析 PDF文档

    这份名为"Oracle 内存全面分析"的PDF文档深入探讨了Oracle内存架构的各个方面,对于DBA(数据库管理员)和开发人员来说,理解这些知识至关重要。 Oracle内存主要由两大部分构成:System Global Area (SGA) 和 ...

    oracle数据库初级管理员

    4. **空间管理**:包括表空间、数据段、索引段、回滚段等的创建和管理,以及对磁盘空间的监控和扩展。 5. **安全性管理**:设置用户权限、角色分配、口令策略,以及通过SQL*Plus或企业管理器进行用户管理。 6. **...

    oracle汉字转拼音package包-支持UTF8

    在Oracle数据库环境中,有时我们需要将汉字转换为对应的拼音,以便进行数据分析、索引优化或文本处理等操作。针对这一需求,有一个专门的Oracle Package包,它支持UTF8编码,能够帮助我们实现汉字到拼音的转换。这个...

    oracle dba日常管理

    表空间管理涉及合理分配存储资源,如使用自动段空间管理(ASSM)和自动存储管理(ASM)。 六、常见SQL语句 Oracle DBA经常使用的SQL语句包括: 1. 查看表结构:`DESCRIBE table_name;` 2. 查询数据:`SELECT * FROM...

    oracle数据库管理工具

    Oracle数据库是全球广泛使用的大型企业级关系型数据库管理系统,它提供了强大的数据存储、处理和管理功能。对于Oracle数据库的管理,PL/SQL Developer是一款非常重要的工具,尤其在开发和维护PL/SQL代码时,它的作用...

    oracle学生管理系统课程设计

    Oracle学生管理系统课程设计是一个典型的数据库应用案例,主要目的是让学生掌握Oracle数据库管理和开发的基本技能。在这个项目中,学生将学习如何设计、实现并优化一个能够存储、检索和管理学生信息的数据库系统。...

    oracle数据库管理的一组经典文档

    这一组经典文档涵盖了Oracle数据库管理的关键方面,包括密码管理、数据库恢复、数据对象分析、操作控制以及高可用性方案。以下是对这些主题的详细解释: 1. **密码管理**:在Oracle数据库中,安全管理是至关重要的...

    oracle 数据库管理员指南

    Oracle数据库管理员指南是一本深入解析Oracle数据库管理的权威著作,对于从事大型数据库开发与分析的专业人士来说,它无疑是必备的参考资料。Oracle数据库是全球广泛使用的数据库管理系统之一,尤其在企业级应用中...

    Oracle行转列(不定列)

    在数据库管理领域,Oracle数据库系统提供了丰富的功能来处理复杂的数据操作。其中,"行转列(不定列)"是数据库查询中的一种常见需求,尤其是在数据分析和报表生成时。本篇文章将详细探讨Oracle如何实现行转列为列的...

    oracle行转列

    "Oracle行转列"是数据库查询中常见的一种需求,尤其是在数据分析和报表展示时。这个主题涉及到Oracle数据库中的聚合函数、分析函数以及一些高级SQL技巧。 首先,"行转列"的基本思想是将数据库表中的一列数据转换为...

    甲骨文新推Oracle Linux管理软件包

    本文为大家介绍了甲骨文向参与...利用Oracle企业管理10g的系统功能,一群Linux服务器可以组成一个专门的、具有其他应用服务组件的组,这样就可在应用服务级实施全面的性能和健康监控,如自动进行根本原因分析等。

    Oracle数据库管理指南

    Oracle数据库管理指南是一份详尽的资源,专为那些希望深入了解和管理Oracle 9i数据库系统的用户准备。Oracle 9i是Oracle公司推出的数据库管理系统的一个重要版本,它提供了许多先进的特性和功能,以提高数据存储、...

Global site tag (gtag.js) - Google Analytics