惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
Engineering at Meta
Engineering at Meta
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
阮一峰的网络日志
阮一峰的网络日志
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
量子位
Jina AI
Jina AI
Microsoft Azure Blog
Microsoft Azure Blog
博客园_首页
L
LangChain Blog
A
About on SuperTechFans
人人都是产品经理
人人都是产品经理
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
美团技术团队
博客园 - 三生石上(FineUI控件)
N
Netflix TechBlog - Medium
D
DataBreaches.Net
P
Proofpoint News Feed
小众软件
小众软件
Vercel News
Vercel News
T
The Blog of Author Tim Ferriss
WordPress大学
WordPress大学
雷峰网
雷峰网
G
Google Developers Blog

博客园 - AlfredZhao

执行新项目 python 脚本前,先用 conda 建一个独立环境 Git 提交代码:从报错到 SSH 免密推送 GitHub 克隆他人私有仓库:从授权到下载 理解Oracle Property Graph:以账户转账示例完成图特性最小测试 APEX 无法分配 SH 用户?一个存储过程轻松解决 SH 中文化样例数据使用手册 进程都杀了,为什么 `netstat` 还能看到端口? MAC 空间告急?Codex 的 156GB 缓存垃圾,这样清! 人工清理问题数据:先查准,再删除 TK(Trusted Knowledge)为何而生? 使用快捷键快速切换 Mac 外接显示器模式 客户环境 Nginx 配置:流式报表与超时排查要点 Security Central:数据库安全的统一控制与运营平台 Palantir 眼中的一次“订单可能延期”,如何成为实时决策的起点? 从一条订单消息到 Bronze、Silver、Gold:我的第一次 Kafka + Lakehouse 实验 UUID v4 与 v7:同样是唯一 ID,为什么数据库表现可能完全不同? 用 crontab 给 LLM 使用量装上“监控眼” DeepSeek 与 GPT API 价格调整:该关注什么? 查看 Oracle 数据库中的定时任务执行情况 Codex 专用用户登录后自动进入默认项目目录 Mac 小技巧:用方向键优雅处理超长网址 Oracle GDD 与 Raft:别把共识机制和数据主权混为一谈 在 Oracle APEX 中用 BGE_BASE 生成向量:从模型导入到历史数据更新 行业人+AI:真正有价值的四个关键要素 知识库文件解析失败:一次由 Domain Index 引发的定位记录 Unicode 码位数、UTF-8 字节数、中英文差异和 Oracle 长度别再混淆了 Skill 的使用:从路径到能力边界 切换 Embedding 模型时,千万别忽略历史向量维度 kbot 适配 GPT-5.6:一次参数兼容性排查 Git 打 Tag 上传 GitHub 遇到 SSH 超时,如何处理?
Oracle 排除非业务表:一份能直接抄的“全量过滤”SQL
AlfredZhao · 2026-09-10 · via 博客园 - AlfredZhao

2026-09-10 07:19  AlfredZhao  阅读(0)  评论()    收藏  举报

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

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

01 | 查 USER_TABLES(最全推荐版)

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

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 视图,比如最常见的,需要过滤出业务的表以及视图:

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一起成长~