在 Oracle 19c 中,不需要像老版本(11g及以前)那样手动去写一个长长的 WHERE owner NOT IN ('SYS', 'SYSTEM', ...) 列表来排除系统对象。
Oracle 提供了一个非常方便的字段 ORACLE_MAINTAINED。系统自带的对象该字段为 Y,用户创建的业务对象该字段为 N。
可以直接在数据库中执行以下 SQL 语句,就能自动精准地只查询您自己的业务对象:
SQL
SELECT owner, object_type, count(*) AS object_count
FROM dba_objects
WHERE oracle_maintained = 'N' -- 核心过滤条件:排除所有Oracle系统自带对象
GROUP BY owner, object_type
ORDER BY owner, object_type;
如果只想看所有的业务用户(Owner)列表,可以使用:
SQL
SELECT username
FROM dba_users
WHERE oracle_maintained = 'N';
|