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;
相关推荐
传说故事15 分钟前
数据库中一些常用英文单词含义
数据库·oracle
不剪发的Tony老师3 小时前
VeloxDB:一款免费开源的轻量级数据库管理工具
数据库·sql
dotnet903 小时前
批量生成所有表的修改脚本
数据库·sql·oracle
蓝鸟19745 小时前
EXISTS子查询SELECT 1与SELECT *到底有无区别?Oracle生产实测解惑(附HIS业务SQL案例)
oracle·his系统·sql优化·数据库调优·exists
灯澜忆梦5 小时前
【MySQL7】多表查询
数据库·sql
Qlittleboy5 小时前
tp5网站链接不上slqserver,计算机积极拒绝了链接
数据库·sql
一十九的酒6 小时前
Oracle Data Guard 备库归档日志满导致同步中断的解决实战
数据库·oracle·oracle-dg 续传·归档空间满
海带紫菜菠萝汤8 小时前
FFmpeg.wasm 实践:在浏览器中运行 FFmpeg 的能力边界与性能瓶颈
前端·javascript·ffmpeg·音视频·wasm
回眸&啤酒鸭10 小时前
【回眸】Memmy Agent 智能体落地应用全景指南
数据库·oracle
一只专注api接口开发的技术猿10 小时前
OpenClaw 实战:搭建京东商品监控与简易数据分析脚本
大数据·jvm·数据库·oracle·数据分析