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;
相关推荐
山峰哥13 小时前
数据库工程与查询优化案例深度复盘‌
数据库·sql·oracle·编辑器·深度优先·宽度优先
茶栀(*´I`*)17 小时前
数据库零基础入门指南:从基本概念到 SQL 实战
数据库·sql
zcn12618 小时前
exists子查询改写思考
数据库·sql·sql优化改写
黄俊懿18 小时前
【架构师从入门到进阶】第五章:DNS&CDN&网关优化思路——第八节:网关-注入攻击与预防
sql·网络安全·架构·系统架构·架构师·架构设计
betazhou18 小时前
mysql shell8.4.10+mysql 8.4.10搭建MySQL replicaset主从
数据库·mysql·ffmpeg·replicaset·mysql shell
circuitsosk19 小时前
从零搭建行业知识平台:向量库+图数据库+传统关系库的多模检索统一层设计
数据库·python·oracle·向量数据库·rag·多模检索
严同学正在努力21 小时前
Oracle Data Guard 容灾实战:从搭建到切换,一篇讲透
数据库·ai·oracle
oradh21 小时前
Oracle CTAS+rename 表重建方法操作总结
数据库·oracle·ctas·oracle表重建方法
HackTwoHub1 天前
Butter_Cookie 黄油曲奇|浏览器渗透插件,云存储检测、XSS、SQL 注入一站式 Web 安全测试工具
前端·sql·安全·web安全·网络安全·自动化·xss
疯狂打码的少年1 天前
【数据库技术】关系代数连接运算(等值连接/自然连接/外连接)
jvm·数据库·笔记·oracle