oracle优化用到的sql

19c、>50w 行、统计过期 > 3 个月

bash 复制代码
SET LINESIZE 500
SET PAGESIZE 200
COLUMN CON_ID         FORMAT 999
COLUMN CON_NAME       FORMAT A25
COLUMN OWNER          FORMAT A25
COLUMN TABLE_NAME     FORMAT A40
COLUMN NUM_ROWS       FORMAT 999,999,999,999
COLUMN SIZE_MB        FORMAT 999,999.9
COLUMN LAST_ANALYZED  FORMAT A14
COLUMN STATUS         FORMAT A20

SELECT
    t.con_id,
    c.name AS con_name,  <<<--- 这就是 PDB 名称
    t.owner,
    t.table_name,
    t.num_rows,
    ROUND(s.bytes / 1024 / 1024, 1) AS size_mb,
    TO_CHAR(t.last_analyzed, 'yyyy-mm-dd') AS last_analyzed,
    CASE
        WHEN t.last_analyzed IS NULL THEN '⚠️ 从未统计'
        WHEN SYSDATE - t.last_analyzed > 90 THEN '❌ 过期>3个月'
        ELSE '✅ 正常'
    END AS status
FROM
    CDB_TABLES t
INNER JOIN
    v$containers c ON t.con_id = c.con_id
LEFT JOIN
    CDB_SEGMENTS s
    ON t.con_id = s.con_id
    AND t.owner = s.owner
    AND t.table_name = s.segment_name
WHERE
    t.owner NOT IN (
        'SYS','SYSTEM','OUTLN','DBSNMP','WMSYS','CTXSYS','XDB',
        'APEX_040200','APEX_190200','MDSYS','ORDSYS','OLAPSYS',
        'EXFSYS','LBACSYS','APPQOSSYS','DIP','TSMSYS','SYSMAN',
        'SYSBACKUP','SYSDG','SYSKM','SYSRAC','SYS$UMF','ANONYMOUS',
        'GSMADMIN_INTERNAL','DVSYS','DVF','ORDDATA','OWBSYS','OWBSYS_AUDIT'
    )
    AND t.num_rows > 500000
    AND (t.last_analyzed IS NULL OR SYSDATE - t.last_analyzed > 90)
    AND t.table_name NOT LIKE 'BIN$%'
    AND c.open_mode = 'READ WRITE'
ORDER BY
    t.con_id, t.num_rows DESC;


SET LINESIZE 500
SET PAGESIZE 200
COLUMN CON_ID         FORMAT 999
COLUMN CON_NAME       FORMAT A25
COLUMN OWNER          FORMAT A25
COLUMN TABLE_NAME     FORMAT A40
COLUMN NUM_ROWS       FORMAT 999,999,999,999
COLUMN SIZE_MB        FORMAT 999,999.9
COLUMN LAST_ANALYZED  FORMAT A14

SELECT
    t.con_id,
    c.name AS con_name,
    t.owner,
    t.table_name,
    t.num_rows,
    ROUND(s.bytes / 1024 / 1024, 1) AS size_mb,
    TO_CHAR(t.last_analyzed, 'yyyy-mm-dd') AS last_analyzed
FROM
    CDB_TABLES t
INNER JOIN
    v$containers c ON t.con_id = c.con_id
LEFT JOIN
    CDB_SEGMENTS s
    ON t.con_id = s.con_id
    AND t.owner = s.owner
    AND t.table_name = s.segment_name
WHERE
    t.owner NOT IN (
        'SYS','SYSTEM','OUTLN','DBSNMP','WMSYS','CTXSYS','XDB',
        'APEX_040200','APEX_190200','MDSYS','ORDSYS','OLAPSYS',
        'EXFSYS','LBACSYS','APPQOSSYS','DIP','TSMSYS','SYSMAN',
        'SYSBACKUP','SYSDG','SYSKM','SYSRAC','SYS$UMF','ANONYMOUS',
        'GSMADMIN_INTERNAL','DVSYS','DVF','ORDDATA','OWBSYS','OWBSYS_AUDIT'
    )
    AND t.num_rows > 500000
    AND t.table_name NOT LIKE 'BIN$%'
    AND c.open_mode = 'READ WRITE'
ORDER BY
    t.con_id, t.num_rows DESC;
相关推荐
鸽芷咕2 小时前
金仓数据库标量子查询消除:一条SQL从32秒优化到24毫秒
数据库·sql
兔子宇航员03012 小时前
HiveSQL 中 NULL 与空字符串的区别与注意事项
数据库·数据仓库·sql
杨云龙UP2 小时前
Oracle CDB巡检脚本使用SOP:从HTML原始报告到Word正式交付_2026-05-29
运维·服务器·数据库·oracle·架构·html·巡检
保定公民2 小时前
Oracle 层次查询(CONNECT BY)完全指南:从入门到精通
数据库·sql·oracle·达梦数据库·层次查询
闪电悠米2 小时前
黑马点评-优惠券秒杀-03_basic_seckill_and_oversell
java·数据库·spring boot·spring·缓存·oracle·面试
逍遥德2 小时前
PostgreSQL --- 数组函数详解
数据库·sql·postgresql
lzhdim14 小时前
SQL 入门 16:SQL 事务隔离级别与死锁解析(易懂)
数据库·sql
tedcloud12315 小时前
DBX部署教程:打造支持AI SQL助手的数据库管理环境
数据库·人工智能·sql
云策数链16 小时前
用友U8数据库核心表结构与业务关联解析(附常用查询SQL)
数据库·sql·erp·用友·云策数链