Oracle含LOB大字段表的存储占用统计

Oracle含LOB大字段表的存储占用统计

  • [1 环境说明](#1 环境说明)

1 环境说明

CPU X86

Os CentOS 7

ORACLE 11.2.0.4.0

  • 本脚本用于统计 Oracle 数据库中所有包含大字段(LOB)的表空间占用情况 。它通过关联 dba_tablesdba_segmentsdba_lobs 数据字典视图,一次性汇总出每张含 LOB 字段的表的真实存储占用,帮助 DBA 快速定位"占用空间大表"。

脚本输出三个核心指标:

  • 表数据大小(GB) :表数据段(TABLE 段)本身占用的空间。
  • LOB总大小(GB) :该表下所有 LOB 段(LOBSEGMENT)与 LOB 索引段(LOBINDEX)的合计占用。
  • 真实总大小(GB):表数据与 LOB 占用之和,反映该表的真实存储成本。
  • 说明:仅统计包含 LOB 字段的表(lob_seg.table_name IS NOT NULL),并按真实总大小降序排列,便于一眼锁定存储占用最高的表。
sql 复制代码
SELECT
    t.owner AS "表所有者",
    t.table_name AS "表名",
    -- 1. 表数据段本身的大小 (GB)
    ROUND(NVL(tab_seg.bytes, 0) / 1024 / 1024 / 1024, 2) AS "表数据大小(GB)",
    -- 2. 关联的LOB段和LOB索引段的总大小 (GB)
    ROUND(NVL(lob_seg.total_lob_bytes, 0) / 1024 / 1024 / 1024, 2) AS "LOB总大小(GB)",
    -- 3. 表的真实总占用空间 (表数据 + LOB)
    ROUND((NVL(tab_seg.bytes, 0) + NVL(lob_seg.total_lob_bytes, 0)) / 1024 / 1024 / 1024, 2) AS "真实总大小(GB)"
FROM
    dba_tables t
-- 关联查询表数据段的大小
LEFT JOIN dba_segments tab_seg
    ON t.owner = tab_seg.owner 
    AND t.table_name = tab_seg.segment_name 
    AND tab_seg.segment_type = 'TABLE'
-- 关联查询该表下所有LOB段和LOB索引段的大小总和
LEFT JOIN (
    SELECT 
        l.owner, 
        l.table_name, 
        SUM(s.bytes) AS total_lob_bytes
    FROM dba_lobs l
    JOIN dba_segments s 
        ON l.owner = s.owner 
        AND (l.segment_name = s.segment_name OR l.index_name = s.segment_name)
    WHERE s.segment_type IN ('LOBSEGMENT', 'LOBINDEX')
    GROUP BY l.owner, l.table_name
) lob_seg
    ON t.owner = lob_seg.owner 
    AND t.table_name = lob_seg.table_name
WHERE
    lob_seg.table_name IS NOT NULL -- 仅筛选包含LOB字段的表
ORDER BY 
    "真实总大小(GB)" DESC; -- 按真实总大小降序排列,快速定位"占用空间大表"
相关推荐
Inhand-Victor32 分钟前
从 CAN 总线到 AWS IoT:EC312 边缘计算网关实现 CAN 数据云端接入
数据库
活跃的煤矿打工人1 小时前
【星海出品】SQLite的进阶操作
数据库·sqlite
云祺vinchin1 小时前
医疗行业灾备实践:一套方案实现HIS、EMR、PACS系统安全闭环
数据库·安全·数据备份·医疗安全·容灾备份
梦想不只是梦与想1 小时前
MySQL 中的窗口函数
数据库·mysql·窗口函数
严同学正在努力1 小时前
Oracle数据技术运维大全(下篇)
运维·数据库·ai·oracle·架构
Irene19912 小时前
FROM DUAL UNION ALL 是 Oracle 特有的写法,专门用来在 SQL 中手工构造一个固定的多行数据集(即“行值构造函数”)。
oracle·行值构造函数
catino2 小时前
spring-事务@Transactional
java·数据库·spring
数智启示录2 小时前
Apache Doris 4.0.8 数据建模实战(第 2 篇):同一批订单写进三种模型,为什么得到三个答案
大数据·数据库·面试