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;
相关推荐
薛晓刚5 小时前
Oracle ADG 备库归档丢了怎么办?RMAN 增量前滚实战
数据库·oracle
阿俊-全栈开发5 小时前
LikeShop 版本升级与备份:从旧版平滑迁移的完整步骤
jvm·数据库·oracle·开源·likeshop·likeshop开源商城
lvqinglou7 小时前
学习Sql-part1 for婷姐
sql·学习·性能优化
蜗牛互联网7 小时前
Java Agent 工具调用的 allowlist、参数校验与调用预算
java·开发语言·人工智能·后端·oracle
冰暮流星7 小时前
sql之is not null运算符
数据库·sql·oracle
冰暮流星8 小时前
sql之is null 运算符
java·数据库·sql
2601_962966648 小时前
数学与应用数学专业准备风险管理岗,2027届秋招金融知识和工具技能怎么补?
python·sql
oradh8 小时前
Oracle 索引深度解析(从内部原理到实战案例)
数据库·oracle
VidDown9 小时前
自动给视频挑一张能看的封面:帧评分、构图与批量生成
python·ffmpeg·音视频·视频