精华内容
下载资源
问答
  • SQL>SETLONG10000SQL>SELECTDBMS_METADATA.GET_DDL('TABLE',TABLE_NAME)2FROMUSER_TABLES3WHERETABLE_NAMELIKE'T_BIG_TABLE%';DBMS_METADATA.GET_DDL('TABLE',TABLE_NAME)-----------------------...

    SQL> SET LONG 10000

    SQL> SELECT DBMS_METADATA.GET_DDL('TABLE', TABLE_NAME)

    2 FROM USER_TABLES

    3 WHERE TABLE_NAME LIKE 'T_BIG_TABLE%';

    DBMS_METADATA.GET_DDL('TABLE',TABLE_NAME)

    --------------------------------------------------------------------------------

    CREATE TABLE "YANGTK"."T_BIG_TABLE2"

    ( "ID" NUMBER,

    "NAME" VARCHAR2(30)

    ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING

    STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)

    TABLESPACE "LOB_SPACE"

    CREATE TABLE "YANGTK"."T_BIG_TABLE"

    ( "ID" NUMBER,

    "NAME" VARCHAR2(30)

    ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING

    STORAGE(INITIAL 1073741824 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)

    TABLESPACE "LOB_SPACE"

    --------------------next---------------------

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

    Oracle表段中的高水位线HWM

      在Oracle数据的存储中,可以把存储空间想象为一个水库,数据想象为水库中的水。水库中的水的位置有一条线叫做水位线,在Oracle中,这条线被称为高水位线(High-warter mark, HWM)。在数据库表刚建立的时候,由于没有任何数据,所以这个时候水位线是空的,也就是说HWM为最低值。当插入了数据以后,高水位线就会上涨,但是这里也有一个特性,就是如果你采用delete语句删除数据的话,数据虽然被删除了,但是高水位线却没有降低,还是你刚才删除数据以前那么高的水位。也就是说,这条高水位线在日常的增删操作中只会上涨,不会下跌。


      下面我们来谈一下Oracle中Select语句的特性。Select语句会对表中的数据进行一次扫描,但是究竟扫描多少数据存储块呢,这个并不是说数据库中有多少数据,Oracle就扫描这么大的数据块,而是Oracle会扫描高水位线以下的数据块。现在来想象一下,如果刚才是一张刚刚建立的空表,你进行了一次Select操作,那么由于高水位线HWM在最低的0位置上,所以没有数据块需要被扫描,扫描时间会极短。而如果这个时候你首先插入了一千万条数据,然后再用delete语句删除这一千万条数据。由于插入了一千万条数据,所以这个时候的高水位线就在一千万条数据这里。后来删除这一千万条数据的时候,由于delete语句不影响高水位线,所以高水位线依然在一千万条数据这里。这个时候再一次用select语句进行扫描,虽然这个时候表中没有数据,但是由于扫描是按照高水位线来的,所以需要把一千万条数据的存储空间都要扫描一次,也就是说这次扫描所需要的时间和扫描一千万条数据所需要的时间是一样多的。所以有时候有人总是经常说,怎么我的表中没有几条数据,但是还是这么慢呢,这个时候其实奥秘就是这里的高水位线了。

     

        那有没有办法让高水位线下降呢,其实有一种比较简单的方法,那就是采用TRUNCATE语句进行删除数据。采用TRUNCATE语句删除一个表的数据的时候,类似于重新建立了表,不仅把数据都删除了,还把HWM给清空恢复为0。所以如果需要把表清空,在有可能利用TRUNCATE语句来删除数据的时候就利用TRUNCATE语句来删除表,特别是那种数据量有可能很大的临时存储表。

     

    修正ORACLE表的高水位线

     

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

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

    2.执行alter table table_name shrink space; 注意,此命令为Oracle 10g新增功能,再执行该指令之前必须允许行移动 alter table table_name enable row movement;
    3.复制要保留的数据到临时表t,drop原表,然后rename临时表t为原表
    4.emp/imp
    5.alter   table  table_name  deallocate   unused  
    6.尽量truncate 吧

     

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

    HWM 全名HIGH WATER MARK
    在ORACLE中,执行对表的删除操作不会降低该表的高水位线。而全表扫描将始终读取一个段(extent)中所有低于高水位线标记的块。如果在执行删除操作后不降低高水位线标记,则将导致查询语句的性能低下。下面的方法都可以降低高水位线标记。
    1.执行表重建指令 alter table table_name move;
    (在线转移表空间ALTER TABLE 。。。 MOVE TABLESPACE 。。。
    ALTER TABLE 。。。 MOVE 后面不跟参数也行,
    不跟参数表还是在原来的表空间,move后记住重建索引
    如果以后还要继续向这个表增加数据,没有必要move,
    只是释放出来的空间,只能这个表用,其他的表或者segment无法使用该空间
    )
    2.执行alter table table_name shrink space; 注意,此命令为Oracle 10g新增功能,再执行该指令之前必须允许行移动 alter table table_name enable row movement;
    3.复制要保留的数据到临时表t,drop原表,然后rename临时表t为原表
    4.emp/imp
    5.alter table table_name deallocate unused
    6.尽量truncate 吧

    展开全文
  • oracle高水位线

    2015-01-11 12:52:56
    该文档对oracle高水位线进行了详细的总结
  • Oracle高水位线

    2018-04-19 17:55:08
    水库中的水的位置有一条线叫做水位线,在Oracle中,这条线被称为高水位线(High-warter mark,HWM)。在数据库刚建立的时候,由于没有任何数据,所以这个时候水位线是空的,也就是说HWM为最低值。当插入了数据以后...
    在Oracle数据的存储中,可以把存储空间想象为一个水库,数据想象为水库中的水。水库中的水的位置有一条线叫做水位线,在Oracle中,这条线被称为高水位线(High-warter mark,HWM)。在数据库表刚建立的时候,由于没有任何数据,所以这个时候水位线是空的,也就是说HWM为最低值。当插入了数据以后,高水位线就会上涨,但是这里也有一个特性,就是如果你采用delete语句删除数据的话,数据虽然被删除了,但是高水位线却没有降低,还是你刚才删除数据以前那么高的水位。也就是说,这条高水位线在日常的增删操作中只会上涨,不会下跌。
    

    下面我们来谈一下Oracle中Select语句的特性。Select语句会对表中的数据进行一次扫描,但是究竟扫描多少数据存储块呢,这个并不是说数据库中有多少数据,Oracle就扫描这么大的数据块,而是Oracle会扫描高水位线以下的数据块。现在来想象一下,如果刚才是一张刚刚建立的空表,你进行了一次Select操作,那么由于高水位线HWM在最低的0位置上,所以没有数据块需要被扫描,扫描时间会极短。而如果这个时候你首先插入了一千万条数据,然后再用delete语句删除这一千万条数据。由于插入了一千万条数据,所以这个时候的高水位线就在一千万条数据这里。后来删除这一千万条数据的时候,由于delete语句不影响高水位线,所以高水位线依然在一千万条数据这里。这个时候再一次用select语句进行扫描,虽然这个时候表中没有数据,但是由于扫描是按照高水位线来的,所以需要把一千万条数据的存储空间都要扫描一次,也就是说这次扫描所需要的时间和扫描一千万条数据所需要的时间是一样多的。所以有时候有人总是经常说,怎么我的表中没有几条数据,但是还是这么慢呢,这个时候其实奥秘就是这里的高水位线了。

    高水位线下降,有一种比较简单的方法,那就是采用TRUNCATE语句进行删除数据。采用TRUNCATE语句删除一个表的数据的时候,类似于重新建立了表,不仅把数据都删除了,还把HWM给清空恢复为0。所以如果需要把表清空,在有可能利用TRUNCATE语句来删除数据的时候就利用TRUNCATE语句来删除表,特别是那种数据量有可能很大的临时存储表。

    在手动段空间管理(Manual Segment Space Management)中,段中只有一个HWM,但是在Oracle9iRelease1才添加的自动段空间管理(Automatic Segment Space Management)中,又有了一个低HWM的概念出来。为什么有了HWM还又有一个低HWM呢,这个是因为自动段空间管理的特性造成的。在手段段空间管理中,当数据插入以后,如果是插入到新的数据块中,数据块就会被自动格式化等待数据访问。而在自动段空间管理中,数据插入到新的数据块以后,数据块并没有被格式化,而是在第一次在第一次访问这个数据块的时候才格式化这个块。所以我们又需要一条水位线,用来标示已经被格式化的块。这条水位线就叫做低HWM。一般来说,低HWM肯定是低于等于HWM的。
    展开全文
  • Oracle高水位线介绍

    2019-09-22 23:32:07
    水库中的水的位置有一条线叫做水位线,在Oracle中,这条线被称为高水位线(High-warter mark, HWM)。在数据库刚建立的时候,由于没有任何数据,所以这个时候水位线是空的,也就是说HWM为最低值。当插入了数据以后...
  • ORACLE中,执行对表的删除操作不会降低该高水位线。而全扫描将始终读取一个段(extent)中所有低于高水位线标记的块。如果在执行删除操作后不降低高水位线标记,则将导致查询语句的性能低下。下面的方法都可以...
  • Oracle数据库查看高水位线

    万次阅读 2017-01-15 12:51:47
    Oracle数据库查看高水位线
  • Oracle 降低高水位线

    2015-03-30 16:56:57
    高水位线 什么是高水位线(High Water Mark)? 所有的oracle段(segments)都有一个在段内容纳数据的上限,我们把这个上限称为“High Water Mark” 或HWM。这个HWM是一个标...
  • Oracle 降低高水位线的方法 水位(HIGH WARTER MARK,HWM)好比水库中储水的水位,用于描述数据库中段的扩展方式。水位对全扫描方式有着至关重要的影响。当使用DELETE删除记录时,水位并不会下降...
  • Oracle 高水位线

    2019-05-18 14:12:37
    先放一张高水位线的图,看图基本上就明白什么是高水位线了。...--创建,测试高水位线,查询水位是0 ,因为没有数据 conn bb/oracle create table hmw as select * from dba_objects where 1=2; ...
  • 浅析ORACLE数据库高水位线(high water mark)
  • oracle回收高水位线

    2014-07-01 17:54:06
    对表t1,怎么回收该高水位线呢? 1、truncate t1; -- 这只是结果,不是合适的手段! 2、将导出,删除,最后将数据导入 -- ...
  • Oracle高水位线

    2019-08-10 19:52:32
    一、声明: 本人写的一些文章,其中有些... 所有的Oracle段(segments,在此,为了理解方便,建议把segments作为的一个同义词)都有一个在段内容纳数据的上限,我们把这个上限称为"high water mark"或HWM。这个HWM...
  • Oracle清除高水位线

    万次阅读 2014-08-26 16:12:35
    在新增记录时,HWM会慢慢往上移,但是...删除水位的最直接的方法就是truncate Table 但是这种方式太过暴力,所以用以下的方法来删除高水位线。 --删除数据 DELETE FROM GJDS_BUS_OIL_LOG WHERE VERSION --
  • ORACLE高水位线

    2010-12-24 10:06:00
    这几天一直在看一个问题,一个统计程序...不懂为什么,在网上一查,得到一个结论delete数据时会使得oracle高水位线降不下来,查询就会很慢。 最终和解决办法就是在处理完成后,进行一次truncate,让
  • oracle 回收高水位线

    2017-12-29 10:54:59
    通过dba_tables里的blocks字段和有数据的字段做对比,在用1减,求出没有数据的块的百分比(一般超过20%就需要回收了)从而判定是否需要回收高水位线 SQL> alter table test_shrik enable row movement ; SQL> ...
  • 最近遇到Oracle 中数据量很大查询和更新比较慢 需要删除,发现删除后查询速度还是很慢,原来是delete oracle 高水位没有下降的原因。 在oracle里,使用delete删除数据以后,数据库的存储容量不会减少,而且使用...
  • Oracle释放高水位线

    2016-01-17 18:43:00
    /*****************************************************************原因:由于原导出数据库没有整理空间其中主要包括两方面,一是用户产生太多的DELETE,致使的高位线(HWM)在很的位置,所以尽管数据量很...
  • --Oracle 高水位线和全扫描--------------------------2013/11/22高水位线好比水库中储水的水位线,用于描述数据库中段的扩展方式。高水位线对全扫描方式有着至关重要的影响。当使用delete 操作记录时,高水位...
  • oracle 高水位线

    2017-05-03 19:13:00
    水库中的水的位置有一条线叫做水位线,在Oracle中,这条线被称为高水位线(High-warter mark, HWM)。在数据库刚建立的时候,由于没有任何数据,所以这个时候水位线是空的,也就是说HWM为最低值。当插入了数据以后...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,707
精华内容 1,082
关键字:

oracle表高水位线