82-Oracle HWM(高水位线)降低水位线-回收

小伙伴们,业务侧和运维组的有没有要求进行高水位线降低和空间回收的要求,这次解析HWM
1. 核心概念
  • 表碎片​数据块物理存储不连续,由频繁的DML操作(INSERT/UPDATE/DELETE)导致,造成I/O性能下降和空间浪费。
  • 高水位线(HWM)​​表段中已被使用过的最大数据块位置。即使删除数据,HWM仍保持高位,导致Oracle不会自动回收空闲空间。
2. 影响与检测
影响​:
  • 查询性能下降(需扫描更多空闲块)
  • 存储空间浪费
  • 备份/恢复效率降低
检测脚本​: 
-- 先收集统计信息确保准确性
EXEC DBMS_STATS.GATHER_SCHEMA_STATS('HR');

-- 验证统计信息更新时间
SELECT table_name, last_analyzed FROM dba_tables WHERE owner = 'HR';
-- 检测表碎片率(浪费空间 >10% 需处理)-- owner替换为实际用户名
SELECT
    owner,
    table_name,
    ROUND(segment_mb, 2) "Segment (MB)",
    ROUND(actual_used_mb, 2) "Actual Used (MB)",
    ROUND(segment_mb - actual_used_mb, 2) "Wasted (MB)",
    ROUND((segment_mb - actual_used_mb) / segment_mb * 100, 2) "Fragmentation %"
FROM (
    SELECT
        t.owner,
        t.table_name,
        s.bytes / 1024 / 1024 AS segment_mb,
        (t.num_rows * t.avg_row_len) / 1024 / 1024 AS actual_used_mb
    FROM
        dba_tables t
        JOIN dba_segments s ON t.owner = s.owner AND t.table_name = s.segment_name
    WHERE
        t.owner = 'HR'
        AND t.temporary = 'N'
        AND s.segment_type = 'TABLE'
        AND t.num_rows > 0
)
WHERE
    segment_mb > 10  -- 仅检查大于10MB的表
    AND (segment_mb - actual_used_mb) / segment_mb * 100 > 10  -- 碎片率>10%
ORDER BY
    "Wasted (MB)" DESC;
--SYS
OWNER    TABLE_NAME                   Segment (MB)    Actual Used (MB)    Wasted (MB)    Fragmentation %
________ _________________________ _______________ ___________________ ______________ __________________
SYS      TEST_FAST_INGEST                       57               35.48          21.52              37.76
SYS      IDL_UB2$                               17                0.13          16.87              99.26
SYS      CUSTOMER_ORDERS_NOCOMP                112               97.08          14.92              13.32
SYS      IDL_UB1$                               13                0.15          12.85              98.87
SYS      OBJ$                                
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值