`

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原理及性能优化

    本文以FreeList为线索对Oracle的存储管理的原理进行较深入的探讨,涉及Oracle段区块管理的原理,FreeList算法等

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

    近期来,FreeList的重要作用逐渐为 Oracle DBA所认识,网上也出现一些相关的讨论。...在原理探讨的基础上,介绍了常用的存储参数分析方法,并对所涉及的存储优化、HWM的优化和Freelist竞争优化作了说明。

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

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

    Oracle 10g HWM原理及性能优化

    当全表扫描时,Oracle会读取HWM下所有的块,即使这些块中有很多是空块,空块的存在,也即是表中碎片的存在,必将增加全表扫描额外的物理I/O开销及CPU开销,严重降低访问Oracle数据表的性能。通过对Oracle中关于表中...

    Oracle 高水位概念(hwm)

    NULL 博文链接:https://teddywang.iteye.com/blog/849735

    Oracle数据文件收缩实例

    在原理探讨的基础上,介绍了常用的存储参数分析方法,并对所涉及的存储优化、HWM的优化和Freelist竞争优化作了说明。 缩略语: ASSM:auto segement space management HWM:high water mark DBA:data block...

    HWM14高层大气风场模式

    HWM-14为HWM(水平风场模型)系列模型的最新版本,主要改进在120km以上高度,增加了赤道和极区地基630 nm FPI和GOCE卫星风场测量数据,填补了部分纬度和地方时覆盖范围上的空白。

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

    理解oracle的高水位以及如何降低, 增加空间的利用

    ORACLE表空间的回收脚本

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

    hwm.dll

    hwm

    HWM14_风场_中性大气_

    中性大气风场模型(2014):计算中性大气风场速度

    hwm93:Python和Matlab中的NASA水平风模型HWM93

    Python中的HWM93 Python≥3.6的NASA水平风模型HWM93 适用于许多Fortran编译器,包括: Gfortran≥5 英特尔ifort PGI pgf90 Nvidia flang 安装 需要诸如gfortran类的Fortran编译器。 我们使用f2py ( numpy一...

    62332440_hwm840Dsl

    62332440_hwm840Dsl

    show hwm sql

    show hwm sql sql script javascript develop

    HWM_MBUS-M13_1.08_EN_mbus_

    MBUS power line communication module

    hwm.task:最小任务库

    hwm.task 这是什么 轻量级线程池实现 特征 仅标题 使用C++标准线程 您可以指定要启动的线程数 您可以使用std::future获取要执行的任务的返回值。 样本 int main () { // ! タスクキュー // ! キューに積まれた関...

    HWM工具「HWM Tool」-crx插件

    游戏“英雄的战争与金钱”(heroeswm.ru)界面的定制和功能的扩展 目前主要特点: - 战斗列表中的人物角色旁边的OA显示,艺术品的数量和制作的存在; - 狩猎名单中的中立人的生命单位总数的图像;...

    如何降低DB2的管理表空间的高水位标记

    如果使用:db2 list tablespaces show detail,看到某个DMS表空间的已用页数低于高水位标记,则有可能通过如下方法降低高水位标记:重组表空间的某个表;或者将某个表中的数据导出,然后将它删除,重新创建该表再将...

    oracle truncate恢复

    1 2 2 D:\ORACLE\ORADATA\XJ\UNDOTBS01.DBF 4096 3 3 3 D:\ORACLE\ORADATA\XJ\DRSYS01.DBF 4096 4 4 4 D:\ORACLE\ORADATA\XJ\EXAMPLE01.DBF 4096 5 5 5 D:\ORACLE\ORADATA\XJ\INDX01.DBF 4096 6 6 6 D:\ORACLE\...

    高水位线详解

    在 Oracle 数据的存储中,可以把存储空间想象为一个水库,数据想象为水 库中的水。水库中的水的位置有一条线叫做水位线,在 Oracle 中,这条线被称为`高水位线(High-warter mark, HWM)

Global site tag (gtag.js) - Google Analytics