Oracle 排除非业务表:一份能直接抄的“全量过滤”SQL

在日常的 Oracle 开发与运维中,我们经常需要列出某个 Schema 下的"真实业务表"。但现实往往很骨感:只要库里启用过全文索引、物化视图、高级队列,甚至只是删过几张表,USER_TABLES 里就会混入一堆系统自动生成的辅助表。

笔者在整理清单时发现,仅靠过滤常见的 BIN$%(回收站)和 SYS_% 并不够。像外部表临时表 ET$%、空间索引 MDXT_% 这类前缀,仅在特定场景下出现,容易被遗漏。为此,笔者将新旧版本中所有系统辅助表前缀做了全量整合,整理出下面这份"最全排除 SQL"。

01 | 查 USER_TABLES(最全推荐版)

如果只需要当前用户下、且排除官方标记的二级表和嵌套表的业务表,推荐直接查 USER_TABLES

sql 复制代码
SELECT table_name 
FROM user_tables
WHERE 
  -- 1. 过滤官方标记的二级表与嵌套表
  (secondary IS NULL OR secondary = 'N')
  AND (nested IS NULL OR nested = 'NO')

  -- 2. 索引与内部特性辅助表
  AND table_name NOT LIKE 'DR$%'           -- 全文索引 (Oracle Text)
  AND table_name NOT LIKE 'VECTOR$%'      -- 23ai 向量索引 (HNSW/IVF)
  AND table_name NOT LIKE 'MDXT_%'         -- 空间索引 (Spatial Index)
  AND table_name NOT LIKE 'SYS_%'          -- 系统临时表 / LOB 表

  -- 3. 数据同步与高级特性表
  AND table_name NOT LIKE 'AQ$%'           -- 高级队列 (Advanced Queuing)
  AND table_name NOT LIKE 'MLOG$%'         -- 物化视图日志
  AND table_name NOT LIKE 'RUPD$%'         -- 物化视图更新日志
  AND table_name NOT LIKE 'ET$%'           -- 外部表 (External Table) 临时表
  AND table_name NOT LIKE 'DM$%'           -- Data Mining 数据挖掘模型表
  AND table_name NOT LIKE 'ANNOTATIONS_%'  -- 23ai 数据注解表

  -- 4. 开发工具与管理平台辅助表
  AND table_name NOT LIKE 'DBTOOLS$%'      -- Database Actions / ORDS 执行历史表
  AND table_name NOT LIKE 'SQLDEV$%'       -- SQL Developer 辅助表

  -- 5. 系统垃圾与回收站
  AND table_name NOT LIKE 'BIN$%'         -- 回收站表 (Recycle Bin)
  
  order by table_name;

02 | 查 USER_OBJECTS(全量过滤版)

如果想覆盖当前用户可见的所有对象,可以改用 user_objects 视图,比如最常见的,需要过滤出业务的表以及视图:

sql 复制代码
SELECT object_name AS table_name, object_type AS table_type
FROM user_objects
WHERE object_type IN ('TABLE', 'VIEW')
  -- 1. 过滤所有系统/后台标记为自动生成的对象
  AND generated = 'N'

  -- 2. 索引与内部特性辅助表(以防某些版本或场景下 generated 为 N)
  AND object_name NOT LIKE 'DR$%'           -- 全文索引 (Oracle Text)
  AND object_name NOT LIKE 'VECTOR$%'      -- 23ai 向量索引 (HNSW/IVF)
  AND object_name NOT LIKE 'MDXT_%'         -- 空间索引 (Spatial Index)
  AND object_name NOT LIKE 'SYS_%'          -- 系统临时表 / LOB 表

  -- 3. 数据同步、工具与高级特性表
  AND object_name NOT LIKE 'AQ$%'           -- 高级队列 (Advanced Queuing)
  AND object_name NOT LIKE 'MLOG$%'         -- 物化视图日志
  AND object_name NOT LIKE 'RUPD$%'         -- 物化视图更新日志
  AND object_name NOT LIKE 'ET$%'           -- 外部表 (External Table) 临时表
  AND object_name NOT LIKE 'DM$%'           -- Data Mining 数据挖掘模型表
  AND object_name NOT LIKE 'ANNOTATIONS_%'  -- 23ai 数据注解表

  -- 4. 开发工具与管理平台辅助表
  AND object_name NOT LIKE 'DBTOOLS$%'      -- Database Actions / ORDS 执行历史表
  AND object_name NOT LIKE 'SQLDEV$%'       -- SQL Developer 辅助表

  -- 5. 系统视图 & 回收站
  AND object_name NOT LIKE 'METADATA_%'     -- 23ai 元数据注解相关视图
  AND object_name NOT LIKE 'MVIEW_%'        -- 物化视图系统视图
  AND object_name NOT LIKE 'LOGMNR_%'       -- LogMiner 系统视图
  AND object_name NOT LIKE 'OLAP_%'         -- OLAP 特性系统视图
  AND object_name NOT LIKE 'BIN$%'         -- 数据库回收站 (Recycle Bin)

  order by table_type, table_name;

03 | 核心汇总对照清单

这份对照表可以直接保存为开发规范,方便日后排查:

过滤前缀 对应功能/模块 产生场景
DR$% 全文索引 (Oracle Text) 创建 CONTEXT 类型的全文索引
VECTOR$% AI 向量检索 (23ai) 创建 VECTOR 类型字段的 HNSW/IVF 索引
MDXT_% 空间索引 (Spatial Index) 创建 SDO_GEOMETRY 空间索引
SYS_% 系统底层/LOB段/临时表 表中包含 CLOB/BLOB 或在线重定义
AQ$% 高级队列 (Advanced Queuing) 使用 Oracle 内部消息队列
MLOG$% / RUPD$% 物化视图日志 (MView Log) 为表创建了增量刷新的物化视图日志
ET$% 外部表 (External Table) 访问外部文件时生成的临时控制表
DM$% 数据挖掘 / 机器学习 (OML) 在数据库内训练/运行 ML 模型
ANNOTATIONS_% 数据注解 (23ai) 给表或列添加元数据 Annotation
DBTOOLS$% / SQLDEV$% Web/客户端工具控制表 使用 ORDS、SQL Developer Web 等工具
BIN$% 数据库回收站 删表(DROP TABLE)后留在回收站的数据

按这份全量列表过滤后,可以覆盖绝大多数常见场景下的系统辅助表;但不同版本和特性可能引入新的前缀,且若业务表本身以 SYS_BIN$ 等开头也会被误过滤,请结合实际情况调整。当然,如果你发现还有漏网之鱼,欢迎补充,加到过滤列表中来。

关注我,和AI一起成长~

相关推荐
斑马13913 小时前
Linux软件编程学习笔记(十三)——数据库
数据库·oracle
十六年开源服务商13 小时前
2026网站备份方案完整指南
数据库·oracle
风123456789~19 小时前
【Oracle专栏】解决clob+dblink 插入报错 ORA-22992
数据库·oracle
小码过河.1 天前
ocean自增主键模式说明
数据库·oracle
2601_966377131 天前
运营商密评密改落地实践:透明加密解决密码应用合规与安全痛点
数据库·安全·oracle
丁丁点灯o2 天前
Oracle中使用外键的场景及不适用外键的情况
数据库·oracle
oradh2 天前
Oracle enq: US - contention 等待事件总结
数据库·oracle
严同学正在努力2 天前
SQL Server 15.0.2000.5(2019 CU5)性能分析基线构建实战教程
数据库·ai·oracle·dba
MC丶科2 天前
软考架构师90天冲刺|DAY44·Redis高级应用
数据库·数据仓库·redis·缓存·oracle·容器·规格说明书