`

降低一个表的高水位线(HWM)的方法

 
阅读更多
      降低一个表的高水位线(HWM)的6种方式,6种方式修正ORACLE表的高水位线

  在ORACLE中,执行对表的删除操作不会降低该表的高水位线。而全表扫描将始终读取一个段(extent)中所有低于高水位线标记的块。如果在执行删除操作后不降低高水位线标记,则将导致查询语句的性能低下。

  下面的方法都可以降低高水位线标记。

  (1). 执行表重建指令 alter table table_name move;

  在线转移表空间ALTER TABLE ... MOVE TABLESPACE ..

  当你创建了一个对象如表以后,不管你有没有插入数据,它都会占用一些块,ORACLE也会给它分配必要的空间.同样,用ALTER TABLE MOVE释放自由空间后,还是保留了一些空间给这个表.

  ALTER TABLE ... MOVE 后面不跟参数也行,不跟参数表还是在原来的表空间,Move后记住重建索引。如果以后还要继续向这个表增加数据,没有必要move,只是释放出来的空间,只能这个表用,其他的表或者segment无法使用该空间。

  (2). 执行alter table table_name shrink space;

alter table CHANNEL_GROUP enable row movement;
alter table CHANNEL_GROUP shrink space;


  注意,此命令为Oracle 10g新增功能,再执行该指令之前必须允许行移动 alter table table_name enable row movement;

  如果要同时压缩表的索引:ALTER TABLE TEST_TAB SHRINK SPACE CASCADE

  (3). 复制要保留的数据到临时表t,drop原表,然后rename临时表t为原表


[1].临时表方式.
select tablespace_name from tabs where table_name='ABIS_ASSIGNMENT_COMMAND';--TABSPA_YF_ABIS
create table ABIS_ASSIGNMENT_COMMAND_COPY tablespace TABSPA_YF_ABIS nologging as select * from ABIS_ASSIGNMENT_COMMAND;
alter table ABIS_ASSIGNMENT_COMMAND_COPY rename to ABIS_ASSIGNMENT_COMMAND;
drop table E ABIS_ASSIGNMENT_COMMAND_COPY;
commit;

[2].如果要删除掉一个非分区表的大部分数据,又要降低这个表的高水位线,可以这么做.

select table_name,tablespace_name from user_tables where table_name=upper('internal_cell1');--TABSPA_CDD
create table internal_cell1_copy tablespace TABSPA_CDD nologging as select * from internal_cell1 where ttime!='2014-01-13';
commit;
drop table internal_cell1;
alter table internal_cell1_copy rename to internal_cell1;
commit;

[3].如果只要一个表的表结构,不复制数据,可以这么做。

create table site_info_copy tablespace TABSPA_CDD nologging as select * from site_info where 1=2;



  (4). 用逻辑导入导出: Emp/Imp

exp 'scott/fsyd' file='E:\serveral_tablels.dmp' tables=(cy_cell_list,site_info,CELTCHF,region_list)
imp 'scott/fsyd' file='F:\从249导过来的数据\serveral_tablels.dmp' tables=(cy_cell_list,site_info,CELTCHF,region_list)


  (5). Alter table table_name deallocate unused

execute immediate 'truncate table cy_xinzhan_guihua_advice';
execute immediate 'alter table cy_xinzhan_guihua_advice deallocate UNUSED KEEP 0';


  注:这证明,DEALLOCATE UNUSED为释放HWM上面的未使用空间,但是并不会释放HWM下面的自由空间,也不会移动HWM的位置.

  (6). 尽量使用truncate.






分享到:
评论

相关推荐

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

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

    oracle高水位线

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

    高水位线详解

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

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

    Oracle数据库中的“高水位”(High Water Mark, HWM)是表空间管理的一个关键概念,它对于数据库的性能和空间利用率有着深远的影响。本文将深入解析高水位的概念、作用,以及如何调整以优化存储效率。 高水位(HWM...

    Oracle 高水位概念(hwm)

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

    Oracle降低高水位的方法

    在Oracle数据库中,高水位(High Water Mark, HWM)是衡量表数据存储位置的一个关键概念。它标识了表中数据曾经达到的最高存储位置。每当向表中插入、更新或删除数据时,Oracle数据库会自动管理数据的存储位置。值得...

    Oracle Freelist和HWM原理及性能优化

    HWM(High Water Mark),即高水位线,是段内的一个标记,指示了数据的最高达到位置。当数据被删除后,块虽然变为空闲,但HWM并不会自动下移,除非使用`ALTER TABLE ... DEALLOCATE UNUSED`命令。HWM的存在影响了...

    oracle高水位.txt

    ` 的笔误,这条命令的作用是将表`AC9G_TEMP`中的数据物理上移动到一个新的位置,并重置其高水位线,这样可以有效地回收之前删除或更新的数据所占用的空间。 - 重建在线索引: ```sql ALTER INDEX IDX_ID REBUILD ...

    DB2V9.7新特性-降低高水位标记

    内容表空间高水位标记(HWM)为什么要降低高水位标记在9.7以前如何降低高水位标记9.7降低高水位标记的新功能总结参考资料表空间高水位标记(HWM)高水位标记是一个应用广泛的术语,在很多的场合都会使用到,一般用以...

    高水位(High_Water_Mark)的概念及高水位问题的解决

    高水位(HWM)是一个重要的概念,在Oracle数据库管理中扮演着关键角色。通过理解和掌握如何管理和优化HWM,可以显著提高数据库性能和空间利用率。上述提供的方法和技术可以帮助数据库管理员有效地解决因HWM引起的...

    HWM14高层大气风场模式

    该模型的一个关键增强是纳入了赤道和极地区域的地基630 nm荧光成像仪(FPI)观测数据。630 nm FPI是一种能实时监测大气高层风场的仪器,通过测量大气中氧气分子的荧光辐射强度来推算风速和风向。这些地面观测数据的...

    HWM14_风场_中性大气_

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

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

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

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

    在讨论Oracle 10g中的高水位标记(HWM)原理及性能优化策略之前,我们首先要了解HWM是什么以及它在Oracle数据库中的作用。HWM是Oracle数据库中用于区分数据段中已使用块和未使用块的界限。在全表扫描操作中,Oracle...

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

    一旦数据写入超过了HWM,Oracle会在段的下一个区分配新的空间。HWM与SQL性能紧密相关,因为它影响了数据扫描的效率。如果数据集中在HWM下方,查询可以快速访问;反之,如果数据散落在HWM之上,查询可能需要遍历更多...

    HWM_MBUS-M13_1.08_EN_mbus_

    MBUS协议设计用于低压电力系统,支持多点对多点通信,允许一个主设备(如集中器)与多个从设备(如智能表计)进行交互。 MBUS协议的特点包括: 1. **双向通信**:能够实现主设备向从设备发送命令和从设备向主设备...

    Oracle 10g HWM原理及性能优化

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

    hwm.dll

    hwm

Global site tag (gtag.js) - Google Analytics