`

Oracle降低HWM的集中方法

阅读更多
http://hi.baidu.com/wschao2005/blog/item/fe037089d5a18eb80e2444ad.html
High Water Mark (HWM)指的是當我們建立一個segment的時候,在segment內的一個指標,界定了segment 內曾經配置過的block水位。
剛建立segment時尚未insert資料,HWM通常在segment header附近,當你不斷地insert資料使用了更多的block之後,HWM自然會跟著移動。但是日後你delete資料後,雖然實際儲存資料的 block已經減少,但是HWM仍然不會改變,這就像水庫的水位曾經滿到某個刻度而留下一道水痕,雖然水位下降了但是仍然清晰可見那道高水位。
HWM之下如果存在太多空的block,最大的缺點就是當發生Full Table Scan (FTS)的時候,會造成過多無謂的IO,因為FTS會讀取segment內的block直到HWM為止,如此也會造成buffer pool的使用效率不佳。
HWM是oracle中block有没有使用的分界线,它会随着数据的insert而上升,但它并不会随数据的delete而下降,因此全表扫描的时间并不因数据的delete而减少,相反可能由于块清除反而全表扫描时间增加,可以用下面方法的任一一种来降低HWM:
第一种:shrink

适用于10g以后的版本,前提是这个表,索引,物化视图或物化视图log所在表空间segment的管理是auto的,并且表已enable row movement,如:

引用
SQL> select owner,segment_name,bytes,blocks,extents from dba_segments
where segment_name = 'EMP';

SQL> alter table emp enable row movement;

SQL> alter table emp shrink space;

SQL> select owner,segment_name,bytes,blocks,extents from dba_segments
where segment_name = 'EMP';


第二种:online redefinition

online redefinition在oracle 9i引用,10g对DBMS_REDEFINITION包做了一些调整,使用的操作起来理简单,如新增加的COPY_TABLE_DEPENDENTS,UNREGISTER_DEPENDENT_OBJECT,方法如下:

1.调用dbms_redefinition.can_redef_table procedure确认是否可以online redefinition

SQL> EXECUTE dbms_redefinition.can_redef_table ('FINANCE', 'ACCTS_PAYABLE');

2.在redefinition schema下创建interim table

3.如果redefinition一个大表,可以用下面的Statement来改善性能:

SQL> alter session force parallel dml parallel degree-of-parallelism;

SQL> alter session force parallel query parallel degree-of-parallelism;

4.调用dbms_redefinition.start_redef_table procedure开如redefinition

SQL> dbms_redefinition.start_redef_table('FINANCE', 'ACCTS_PAYABLE','ACCTS_PAYABLE_STAGE');

5.创建dependent objects on interim table

有两种方法:

调用dbms_redefinition.copy_table_dependents自动创建dependent objects;

使用create statement手动创建dependent objects,手动创建的dependents需要调用register_dependent_object注册

6.更新在redefinition过程中的更新到interim表

7.调用dbms_redefinition.finish_redef_table完成redefinition

8.删除收回空间如interim table使用的表

注:使用online redefinition需要额外的空间

第三种:alter table … move

在move时可以使用当前表空间也可以指定其他表空间,如:

SQL> alter table emp move;        --使用当前表空间

SQL> alter table emp move tablespace tbs_emp;           --把表移动到tbs_emp表空间上

在move的过程会锁表,类似下的语句是不能执行:

select rownum from emp where rownum=1 for update nowait;

使用move降低HWM也需要额外表的空间.

第四种:expdp/impdp或exp/imp + truncate

第五种:rename + insert append

上面这两种方法在此就不作说明了.

总结:

shrink和online redefinition是首选择方法,其他方法在降低HWM时会有较长的时间表不能访问(锁表或直接不能访问),另外表后面的四种方法都可以改变表的表空间,online redefinition可以将普通表转换为分区表.
分享到:
评论

相关推荐

    Oracle Freelist和HWM原理及性能优化

    SHRINK SPACE`来压缩段,降低HWM,重新整理空间。对于Freelist竞争,可能需要考虑调整表空间的分配方式,或者在高并发环境下考虑使用ASSM。 总的来说,Oracle的Freelist和HWM是数据库存储管理的关键组成部分,理解...

    Oracle Freelist和HWM原理探讨及相关性能优化

    Oracle数据库的存储管理和性能优化是DBA们关注的重点,其中FreeList和High Water Mark (HWM)是两个关键概念,它们对于理解Oracle的数据块管理、内存利用率和SQL性能至关重要。 FreeList是Oracle用来管理未分配存储...

    Oracle 10g HWM原理及性能优化.pdf

    为了解决这一问题,本文详细探讨了Oracle HWM的概念及其性能调优方法。研究重点在于使用HWM时出现的数据碎片问题,并提出了性能优化解决方案。通过对数据碎片问题的空间重组前后的性能测试,本研究对性能优化效果...

    Oracle 高水位概念(hwm)

    其中,“高水位”(High Water Mark,简称HWM)是Oracle数据库中的一个重要概念,它与表空间、段、区和块等存储结构密切相关。本篇文章将深入探讨Oracle高水位的概念、作用以及其在数据库操作中的影响。 高水位...

    Oracle降低高水位的方法

    ### Oracle降低高水位的方法 #### 一、高水位的概念与作用 在Oracle数据库中,高水位(High Water Mark, HWM)是衡量表数据存储位置的一个关键概念。它标识了表中数据曾经达到的最高存储位置。每当向表中插入、...

    Oracle 10g HWM原理及性能优化

    Oracle 10g 的 High Water Mark (HWM) 是数据库管理中的一个重要概念,它定义了表中已使用存储空间和未使用存储空间的边界。理解HWM的工作原理及其对性能的影响是优化Oracle数据库的关键。 HWM 在逻辑存储管理中...

    Oracle_高水位(HWM_High_Water_Mark)_说明.rar_High Water_Oracle 高水位

    2. **使用COMPACTION**:Oracle的DBMS_REDEFINITION包提供了一种在线重定义表的方法,可以合并碎片,降低高水位。但这需要额外的资源和计划,可能不适合所有环境。 3. **分区管理**:对于大表,使用分区策略可以更...

    HWM14高层大气风场模式

    【HWM14高层大气风场模式】是用于模拟和预测地球高层大气风场的模型,它是HWM(水平风场模型)系列的最新发展。HWM系列模型自上世纪70年代以来一直被广泛应用于空间天气研究和预报,对理解和预测空间环境中的动态...

    HWM14_风场_中性大气_

    HWM14是2014年更新的一个版本,它为科学家和工程师提供了计算中性大气风场速度的方法,是气象学、空间天气预报以及航天器轨道设计等领域不可或缺的数据基础。 中性大气是指地球大气层中不带电的气体分子,主要由...

    Oracle 表的扫描方式及连接方法

    Oracle 读取表中所有的行,扫描该表中高水位线(HWM, High Water Mark)以下的所有数据块。随着数据量的增加,高水位线会不断上涨,读取的数据块就会不断增加。在做 Delete 操作的时候,即使把表中的数据都删掉了,...

    Oracle数据文件收缩实例

    在这个实例中,我们将探讨Oracle的存储管理,特别是FreeList的作用,以及如何通过理解High Water Mark (HWM)来有效地进行数据文件收缩。 FreeList是Oracle用于管理空闲块的数据结构,它跟踪在表段中未分配的空闲...

    oracle高水位线

    Oracle 高水位线(High Water Mark,HWM)是 Oracle 段中一个重要的概念,它标志着段中已经使用的数据块的上限。在 Oracle 中,每个段(包括表、索引等)都有一个高水位线,用于记录该段已经使用的数据块的数量。 ...

    oracle优化资料.docx

    - `SHRINK SPACE COMPACT`在压缩期间可进行DML操作,不降低HWM,而`SHRINK SPACE`会降低HWM并阻塞DML操作,`SHRINK SPACE CASCADE`则同时降低HWM并回收索引空间。 5. **索引收缩** - 删除大量数据后,对应的索引...

    HWM_MBUS-M13_1.08_EN_mbus_

    它通过电力线进行数据传输,无需额外的物理通信线路,大大降低了部署成本。MBUS-M13可能是该模块的型号,其中"M13"可能代表其特定的设计或功能特性。 描述中的“MBUS power line communication module”进一步确认...

    ORACLE 空闲空间管理 PDF

    综上所述,Oracle数据库通过不同的方法来管理空闲空间,旨在提高存储效率和系统性能。从Freelist到ASSM的转变体现了Oracle在存储管理技术上的持续进步。理解这些管理策略对于数据库管理员来说非常重要,可以帮助他们...

    ORACLE表空间的回收脚本

    针对oracle表空间收缩的操作!请仔细查看内部的说明。对于表空间过于庞大的数据库能起到回收剩余空间,并降低高水位HWM的作用

    Oracle的执行计划--上

    在执行全表扫描时,Oracle会从表的头部读取数据直至高水位线(HWM),即使表中的数据已被删除也是如此。值得注意的是,`TRUNCATE`操作可以清除表的所有数据,并将HWM重置到表的头部,从而在下一次执行全表扫描时减少...

    个人收集的oracle面试题目.pdf

    Oracle数据库是大型的事务...通过上述知识点,可以了解到Oracle数据库在面试中的考察点主要集中在数据库的基本操作、性能优化、数据管理、事务处理、备份与恢复等方面。掌握这些知识点对于应对Oracle面试题目至关重要。

Global site tag (gtag.js) - Google Analytics