- 浏览: 560363 次
- 性别:
- 来自: 杭州
-
文章分类
- 全部博客 (340)
- Spring (4)
- Hibernate (2)
- Linux (34)
- Oracle (145)
- Eclipse (1)
- UML (1)
- HTML&&JAVASCRIPT (11)
- JAVA (33)
- 设计模式 (1)
- 版本控制 (1)
- wrap框架 (3)
- IBATIS (5)
- Ruby (1)
- DWR (1)
- MINA (11)
- JBPM (2)
- 缓存技术 (4)
- 网络 (3)
- 应用服务器 (1)
- GWT (5)
- 杂谈 (2)
- ICE (4)
- XML (2)
- ArcGis (2)
- Flex (8)
- junit单元测试 (1)
- SNMP (1)
- 存储 (1)
- office (1)
- MongoDB (0)
- Greenplum (3)
- 管理点滴 (1)
- C++ (6)
- 网络入门 (3)
- Tomcat (7)
- JMX (0)
- webservice (1)
- Oracle的10046事件 (1)
- Library cache内部机制详解 (1)
- expdp通过dblink来导入 (1)
最新评论
-
yuanliangding:
有没有关于mock的更多知识。
基于mock对象和JUnit框架简化Spring Web组件单元测试 -
saup007:
ssh端口不是22,怎么搞呢?
Greenplum 学习笔记 -
springmvc-freemarker:
java开源项目源码实例下载
Apache上全部JAVA开源项目简介 -
bobbell:
哇塞,你真厉害,整理的非常全面。我是一个java barcod ...
Greenplum 学习笔记 -
wsj55133245513324:
这不是bug,你将日志级别从debug提升到INFO 就好了 ...
Spring,smppapi,apache mina, ssl快速实现安全的smpp(5)
High Water Mark (HWM)指的是當我們建立一個segment的時候,在segment內的一個指標,界定了segment 內曾經配置過的block水位。
The high water mark is the boundary between used and unused space in a segment ~ (From Oracle Concept)
簡 單如圖所示,剛建立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可以将普通表转换为分区表.
发表评论
-
expdp通过dblink来导入
2011-12-14 15:01 1798create.sql: spo create.log rem ... -
Library cache内部机制详解
2011-12-14 14:55 920Library cache内部机制详解 http://www ... -
Oracle的10046事件
2011-12-14 14:53 2105Oracle的10046事件,可以跟踪应用程序所执行的SQL语 ... -
REDO LOG MEMBER STATUS 和 REDO LOG GROUP STATUS
2011-12-14 14:51 935V$LOG 中列出的是REDO LOG GROUP STA ... -
oracle的exp/imp使用方法学习(转)
2011-08-30 08:54 971exp/imp两个命令可以说是oracle中最常用的命令了 ... -
oracle几个awr报告
2011-08-09 14:25 903工作中,碰到的数据库慢的几个awr报告 -
Oracle Profile 使用详解
2011-06-21 14:41 978一、目的: Oracle系统中的profile可以用来对 ... -
ORA-27013
2011-04-13 14:25 1521很新的一个bug,看下你的 memory_target是不是& ... -
ACLE表连接方式分析及常见用法
2011-03-23 09:14 1118摘要: 针对在数据仓库 ... -
ORACLE 外部表应用
2011-03-09 14:58 1075SQL> create or replace direc ... -
How to convert a 32-bit database to 64-bit database on Linux
2011-02-18 14:09 1222How to convert a 32-bit databas ... -
expdp impdp 数据库导入导出命令详解
2011-02-16 09:10 1962一、创建逻辑目录,该命令不会在操作系统创建真正的目录,最 ... -
Oracle手工解/锁表
2011-01-25 14:15 2515手工锁表:lock table tbl_t1 in row ... -
oracle动态性能视图
2011-01-22 10:47 866Oracle动态性能视图个人整理 -
RBO规则介绍
2011-01-17 16:45 1095•无条件使用索引•使用内置的优先级别决定访问路径•比较难以 ... -
关于排序、sort_area_size、临时表空间
2011-01-13 15:30 1127简单陈述一下:针对每 ... -
创建索引ORACLE 需要做的工作
2011-01-13 14:53 1327一. 先来看一下创建索引要做哪些操作:1. 把inde ... -
表之间的连接
2011-01-13 10:42 804Join是一种试图将两个表结合在一起的谓词,一次只能连接2 ... -
重建索引的条件
2011-01-12 16:43 962如果索引存在碎片,那每个索引数据块上的索引数据就更少,会导致我 ... -
TKPROF使用学习
2011-01-10 17:38 734Tkprof工具可用来格式化sql trace产生的文件, ...
相关推荐
SHRINK SPACE`来压缩段,降低HWM,重新整理空间。对于Freelist竞争,可能需要考虑调整表空间的分配方式,或者在高并发环境下考虑使用ASSM。 总的来说,Oracle的Freelist和HWM是数据库存储管理的关键组成部分,理解...
最后,给出了几种降低 HWM 的方法,包括 alter table move、shrink space、数据复制、exp/imp 以及 deallocate unused 等方法。 适合人群:具备 Oracle 数据库基础的数据库管理员和技术人员。 使用场景及目标:帮助...
Oracle数据库的存储管理和性能优化是DBA们关注的重点,其中FreeList和High Water Mark (HWM)是两个关键概念,它们对于理解Oracle的数据块管理、内存利用率和SQL性能至关重要。 FreeList是Oracle用来管理未分配存储...
为了解决这一问题,本文详细探讨了Oracle HWM的概念及其性能调优方法。研究重点在于使用HWM时出现的数据碎片问题,并提出了性能优化解决方案。通过对数据碎片问题的空间重组前后的性能测试,本研究对性能优化效果...
其中,“高水位”(High Water Mark,简称HWM)是Oracle数据库中的一个重要概念,它与表空间、段、区和块等存储结构密切相关。本篇文章将深入探讨Oracle高水位的概念、作用以及其在数据库操作中的影响。 高水位...
### Oracle降低高水位的方法 #### 一、高水位的概念与作用 在Oracle数据库中,高水位(High Water Mark, HWM)是衡量表数据存储位置的一个关键概念。它标识了表中数据曾经达到的最高存储位置。每当向表中插入、...
Oracle 10g 的 High Water Mark (HWM) 是数据库管理中的一个重要概念,它定义了表中已使用存储空间和未使用存储空间的边界。理解HWM的工作原理及其对性能的影响是优化Oracle数据库的关键。 HWM 在逻辑存储管理中...
2. **使用COMPACTION**:Oracle的DBMS_REDEFINITION包提供了一种在线重定义表的方法,可以合并碎片,降低高水位。但这需要额外的资源和计划,可能不适合所有环境。 3. **分区管理**:对于大表,使用分区策略可以更...
【HWM14高层大气风场模式】是用于模拟和预测地球高层大气风场的模型,它是HWM(水平风场模型)系列的最新发展。HWM系列模型自上世纪70年代以来一直被广泛应用于空间天气研究和预报,对理解和预测空间环境中的动态...
HWM14是2014年更新的一个版本,它为科学家和工程师提供了计算中性大气风场速度的方法,是气象学、空间天气预报以及航天器轨道设计等领域不可或缺的数据基础。 中性大气是指地球大气层中不带电的气体分子,主要由...
Oracle 读取表中所有的行,扫描该表中高水位线(HWM, High Water Mark)以下的所有数据块。随着数据量的增加,高水位线会不断上涨,读取的数据块就会不断增加。在做 Delete 操作的时候,即使把表中的数据都删掉了,...
在这个实例中,我们将探讨Oracle的存储管理,特别是FreeList的作用,以及如何通过理解High Water Mark (HWM)来有效地进行数据文件收缩。 FreeList是Oracle用于管理空闲块的数据结构,它跟踪在表段中未分配的空闲...
Oracle 高水位线(High Water Mark,HWM)是 Oracle 段中一个重要的概念,它标志着段中已经使用的数据块的上限。在 Oracle 中,每个段(包括表、索引等)都有一个高水位线,用于记录该段已经使用的数据块的数量。 ...
- `SHRINK SPACE COMPACT`在压缩期间可进行DML操作,不降低HWM,而`SHRINK SPACE`会降低HWM并阻塞DML操作,`SHRINK SPACE CASCADE`则同时降低HWM并回收索引空间。 5. **索引收缩** - 删除大量数据后,对应的索引...
它通过电力线进行数据传输,无需额外的物理通信线路,大大降低了部署成本。MBUS-M13可能是该模块的型号,其中"M13"可能代表其特定的设计或功能特性。 描述中的“MBUS power line communication module”进一步确认...
在Oracle数据库中,高水位线(High Water Mark, HWM)是一个重要的概念,它用来标记在某个时刻表空间中最后一次分配块的位置。当执行收缩操作时,HWM是一个非常关键的参考点,因为它决定了数据文件能够收缩的最大范围...
综上所述,Oracle数据库通过不同的方法来管理空闲空间,旨在提高存储效率和系统性能。从Freelist到ASSM的转变体现了Oracle在存储管理技术上的持续进步。理解这些管理策略对于数据库管理员来说非常重要,可以帮助他们...
针对oracle表空间收缩的操作!请仔细查看内部的说明。对于表空间过于庞大的数据库能起到回收剩余空间,并降低高水位HWM的作用
**9.1 术语——高水位线 (High Water Mark, HWM)** 高水位线指明了表中已分配空间的最高点,即使这些空间当前为空闲。 **9.2 术语——PCTFREE** `PCTFREE` 参数指定了插入新行时保留的空间比例,有助于减少行迁移...
在执行全表扫描时,Oracle会从表的头部读取数据直至高水位线(HWM),即使表中的数据已被删除也是如此。值得注意的是,`TRUNCATE`操作可以清除表的所有数据,并将HWM重置到表的头部,从而在下一次执行全表扫描时减少...