SQL> select * from v$version; BANNER ---------------------------------------------------------------- Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod PL/SQL Release 10.2.0.1.0 - Production CORE 10.2.0.1.0 Production TNS for 32-bit Windows: Version 10.2.0.1.0 - Production NLSRTL Version 10.2.0.1.0 - Production ---1.创建测试表 CREATE TABLE T1 TABLESPACE TEST AS SELECT * FROM DBA_OBJECTS; --2 查询segment 头块 SQL> SELECT HEADER_FILE,HEADER_BLOCK FROM DBA_SEGMENTS WHERE SEGMENT_NAME = 'T1'; HEADER_FILE HEADER_BLOCK ----------- ------------ 22 795 --3 DUMP segment 头块 ALTER SYSTEM DUMP DATAFILE 22 BLOCK 795; --4 查看结尾为2492的trace文件 (ORAHOME\product\10.2.0\admin\orcl\udump) SELECT SPID FROM V$PROCESS WHERE ADDR = (SELECT PADDR FROM V$SESSION WHERE SID = (SELECT DISTINCT SID FROM V$MYSTAT)); SPID ------------ 2492 --HWM 为 0x058008fb Highwater:: 0x058008fb --5 计算HWM 对应的文件编号和块 SQL> SELECT DBMS_UTILITY.DATA_BLOCK_ADDRESS_FILE(TO_NUMBER('058008FB','XXXXXXXX')) AS HWM_FILEID FROM DUAL; HWM_FILEID ---------- 22 SQL> SELECT DBMS_UTILITY.DATA_BLOCK_ADDRESS_BLOCK(TO_NUMBER('058008FB','XXXXXXXX')) AS HWM_BLOCKID FROM DUAL; HWM_BLOCKID ----------- 2299 --6. 分析表,查看sgemnt空块的数及最大使用的Block ID SQL> SELECT FILE_ID,MIN(BLOCK_ID),MAX(BLOCK_ID+BLOCKS) FROM DBA_EXTENTS WHERE SEGMENT_NAME='T1' GROUP BY FILE_ID; FILE_ID MIN(BLOCK_ID) MAX(BLOCK_ID+BLOCKS) ---------- ------------- -------------------- 22 793 2313 ANALYZE TABLE T1 COMPUTE STATISTICS; SQL> SELECT EMPTY_BLOCKS FROM DBA_TABLES WHERE TABLE_NAME = 'T1'; EMPTY_BLOCKS ------------ 14 SQL> SELECT 2313 -14 FROM DUAL;--等于HWM_BLOCKID 2313-14 ---------- 2299 --7.记录下delete数据前count(*)的统计信息 SQL> set autotrace traceonly; SQL> select count(*) from T1; 执行计划 ---------------------------------------------------------- Plan hash value: 3724264953 ------------------------------------------------------------------- | Id | Operation | Name | Rows | Cost (%CPU)| Time | ------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 169 (2)| 00:00:03 | | 1 | SORT AGGREGATE | | 1 | | | | 2 | TABLE ACCESS FULL| T1 | 53176 | 169 (2)| 00:00:03 | ------------------------------------------------------------------- 统计信息 ---------------------------------------------------------- 0 recursive calls 0 db block gets 739 consistent gets 0 physical reads 0 redo size 410 bytes sent via SQL*Net to client 385 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1 rows processed --8 删除数据 SQL> set autotrace off; SQL> select count(*) from T1; COUNT(*) ---------- 53176 SQL> delete T1 where rownum <= 30000; 已删除30000行。 SQL> COMMIT; 提交完成。 --9 重新dump 数据头,发现Highwater仍然是原来的值。说明DELETE 并不能使HWM下降。 ALTER SYSTEM DUMP DATAFILE 22 BLOCK 795; Highwater:: 0x058008fb --10. 分析删除数据后,count(*)的统计信息,发现执行的消耗与删除前一样。739个逻辑读 SQL> set autotrace on; SQL> select count(*) from T1; COUNT(*) ---------- 23176 执行计划 ---------------------------------------------------------- Plan hash value: 3724264953 ------------------------------------------------------------------- | Id | Operation | Name | Rows | Cost (%CPU)| Time | ------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 169 (2)| 00:00:03 | | 1 | SORT AGGREGATE | | 1 | | | | 2 | TABLE ACCESS FULL| T1 | 23176 | 169 (2)| 00:00:03 | ------------------------------------------------------------------- 统计信息 ---------------------------------------------------------- 0 recursive calls 0 db block gets 739 consistent gets 0 physical reads 0 redo size 410 bytes sent via SQL*Net to client 385 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1 rows processed
相关推荐
Oracle的Freelist(自由列表)和HWM(高水位线)是数据库管理中的关键概念,它们直接影响到数据存储的效率和SQL查询性能。本文将深入解析这两个概念及其原理,并探讨相关的性能优化策略。 首先,Oracle的Freelist是...
其中,“高水位”(High Water Mark,简称HWM)是Oracle数据库中的一个重要概念,它与表空间、段、区和块等存储结构密切相关。本篇文章将深入探讨Oracle高水位的概念、作用以及其在数据库操作中的影响。 高水位...
Oracle数据库的存储管理和性能优化是DBA们关注的重点,其中FreeList和High Water Mark (HWM)是两个关键概念,它们对于理解Oracle的数据块管理、内存利用率和SQL性能至关重要。 FreeList是Oracle用来管理未分配存储...
在讨论Oracle 10g中的高水位标记(HWM)原理及性能优化策略之前,我们首先要了解HWM是什么以及它在Oracle数据库中的作用。HWM是Oracle数据库中用于区分数据段中已使用块和未使用块的界限。在全表扫描操作中,Oracle...
使用者可能需要这些文件来运行和分析模型,理解高层大气风场的动态特性,或者将模型结果与其他观测数据或模型进行比较验证。 HWM14的应用广泛,不仅在学术研究中用于探索大气动力学和空间天气现象,如极光、热层...
5. **定期分析**:通过ANALYZE TABLE命令定期分析表的统计信息,可以帮助Oracle更准确地估算空间需求,从而避免不必要的空间分配。 6. **优化INSERT操作**:避免一次性插入大量数据,可以减少高水位的快速上升,使...
Oracle 10g 的 High Water Mark (HWM) 是数据库管理中的一个重要概念,它定义了表中已使用存储空间和未使用存储空间的边界。理解HWM的工作原理及其对性能的影响是优化Oracle数据库的关键。 HWM 在逻辑存储管理中...
《中性大气风场模型(HWM14)解析与应用》 中性大气风场模型,简称HWM,是地球物理学中用于描述在中性大气层(即非电离层)内风速和风向分布的重要理论工具。HWM14是2014年更新的一个版本,它为科学家和工程师提供...
在这个实例中,我们将探讨Oracle的存储管理,特别是FreeList的作用,以及如何通过理解High Water Mark (HWM)来有效地进行数据文件收缩。 FreeList是Oracle用于管理空闲块的数据结构,它跟踪在表段中未分配的空闲...
Oracle 高水位线(High Water Mark,HWM)是 Oracle 段中一个重要的概念,它标志着段中已经使用的数据块的上限。在 Oracle 中,每个段(包括表、索引等)都有一个高水位线,用于记录该段已经使用的数据块的数量。 ...
在Oracle数据库中,“高水位”(High Water Mark,HWM)是一个非常重要的概念。它标记了数据表中最后一次插入、更新或删除操作的位置。简单来说,高水位线以下的空间是已经被使用过的空间,而高水位线以上的空间则是...
### Oracle空闲空间管理 #### 引言 在Oracle数据库管理中,空闲空间的有效管理对于提高数据库性能至关重要。Oracle数据库在9.2.0版本以前主要采用链表(Freelist)的方式管理空闲空间,但这种方式存在着串行访问...
这在分析层次结构中非常有用,可以轻松识别出最底层的节点。 3. **CONNECT_BY_ROOT 伪列**: 同样在Oracle 10g中引入,`CONNECT_BY_ROOT`用于返回当前层级的根节点的值。例如,在给定的示例中,`CONNECT_BY_ROOT ...
hwm
在执行全表扫描时,Oracle会从表的头部读取数据直至高水位线(HWM),即使表中的数据已被删除也是如此。值得注意的是,`TRUNCATE`操作可以清除表的所有数据,并将HWM重置到表的头部,从而在下一次执行全表扫描时减少...
- **Free Block 的使用:** Append 模式下的插入操作不会去寻找表中的 free block,而是直接在 High Water Mark (HWM) 上添加数据。这意味着新插入的数据将被放置在表的最后,而不是填充已存在的空闲空间。 ##### 4...
10. Oracle数据库高水位线(HWM):文档提到了HWM的概念,这是Oracle数据库中用来指示数据块中数据所占用的最高位置。HWM通常在删除表数据时不会下移,因此合理管理HWM可以避免磁盘空间浪费。 11. Oracle数据库的...