You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SYSTEM用户时,如何在Oracle SQL中仅列出自建表?

解决SQL Plus中只查看自建表的问题

嗨,作为刚接触SQL Plus的新手,遇到这种结果太多找不到自己表的情况太正常了,我来给你捋清楚怎么解决!

首先得明白为什么你用那两个命令会返回几千条结果:

  • SELECT owner, table_name FROM dba_tables:这个命令会列出所有用户的所有表,包括Oracle自带的系统表、其他用户的表,所以结果自然多到爆炸。
  • SELECT table_name FROM user_tables:这个是列出当前登录用户名下的表,但你用的是SYSTEM账户——这是Oracle的系统管理员账户,本身就自带了大量系统维护用的表,所以你自己建的15张表就被淹没在里面了。

接下来给你几个实用的解决办法,按从临时救急到规范操作排序:

方法1:按创建时间过滤(最快找到你的表)

你是最近才创建的这些表,所以可以通过created字段筛选出最近创建的表,一眼就能找到自己的:

SELECT table_name, created 
FROM user_tables 
WHERE created > TO_DATE('2024-05-01', 'YYYY-MM-DD') -- 把日期改成你开始建表的那天
ORDER BY created DESC;

执行后结果会按创建时间倒序排列,最上面的就是你刚建的表,一目了然。

方法2:用模糊查询找已知关键词的表

如果你记得部分表名的关键词(比如你习惯给表加_test后缀,或者前缀是my_),可以用LIKE模糊匹配:

SELECT table_name 
FROM user_tables 
WHERE table_name LIKE '%test%'; -- 替换成你记得的关键词

这样就能快速定位到相关的表。

方法3:规范操作——创建专属普通用户(推荐长期用)

其实不建议用SYSTEM这类系统账户来建业务表,系统账户的表容易和系统表混在一起,而且权限太大容易误操作。最好创建一个自己的普通用户,以后用这个用户建表:

-- 1. 创建你的专属用户(替换成你想要的用户名和密码)
CREATE USER my_dev IDENTIFIED BY my_dev_password;

-- 2. 授予必要的权限(登录、建表、使用表空间)
GRANT CREATE SESSION, CREATE TABLE, UNLIMITED TABLESPACE TO my_dev;

创建完成后,退出SYSTEM账户,用my_dev登录SQL Plus,再执行:

SELECT table_name FROM user_tables;

这时返回的就只有你自己建的表了,再也不会被系统表干扰!

内容的提问来源于stack exchange,提问作者Alexandru Petrea

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:05:02