Oracle降低高水位线

Oracle降低高水位线

𝓓𝓸𝓷 Lv6

在Oracle数据库中,高水位线(High Water Mark, HWM)是一个表示数据块中数据高度的概念,它指的是数据块中已使用数据的最高点。当你插入或更新表中的数据时,高水位线会上升,以容纳新数据。如果你删除了大部分数据,高水位线仍将保持在较高的位置,这可能会导致存储效率下降。

一、查看表的高水位线

1
2
3
4
5
6
7
8
9
10
SELECT OWNER,
TABLE_NAME,
(BLOCKS * 8192 / 1024 / 1024 / 1024) "高水位空间GB",
(NUM_ROWS * AVG_ROW_LEN / 1024 / 1024 / 1024) "已用空间GB",
blocks * 10 / 100 * 8192 / 1024 / 1024 / 1024 "预留空间GB(pctfree)",
(BLOCKS * 8192 / 1024 / 1024 / 1024) -
(NUM_ROWS * AVG_ROW_LEN / 1024 / 1024 / 1024) -
(blocks * 10 / 100 * 8192 / 1024 / 1024 / 1024) "浪费空间GB"
FROM DBA_TABLES
WHERE table_name = 'T1';

二、降低高水位线

1
2
3
alter table ADMIN.T1 enable row movement;
alter table ADMIN.T1 shrink space CASCADE;
alter table ADMIN.T1 disable row movement;

三、收集统计信息

1
2
3
4
5
6
7
SQL> select OWNER,TABLE_NAME,PARTITIONED from dba_tables where table_name='T1';

SQL> select 'analyze table '||TABLE_NAME||' compute statistics;' from user_tables where table_name='&TABLE_NAME';

SQL> select 'analyze index '||index_name||' compute statistics;' from user_indexes where table_name='&TABLE_NAME';

SQL> analyze table ADMIN.T1 compute statistics;
  • Title: Oracle降低高水位线
  • Author: 𝓓𝓸𝓷
  • Created at : 2024-12-23 15:43:36
  • Updated at : 2024-12-24 09:22:33
  • Link: https://www.zhangdong.me/oracle-reduce-high-water-mark.html
  • License: This work is licensed under CC BY-NC-SA 4.0.
评论