首页 > 解决方案 > 为什么我在一个表空间中创建的表从另一个表空间查询时不会显示出来?

问题描述

两个表空间都在同一个数据库中,所以在 Oracle SQL Developer 中,如果我登录到一个表空间 tb1,我可以看到 tb2 中的所有表。由于权限的原因,我在登录 tb1 时无法创建表 tb2.new_table。所以我登录到 tb2 并制作了 tb2.new_table 并且可以在那里查询它。当我重新登录 tb1 时,我看不到新创建的 tb2.new_table。我只是想知道为什么它没有出现,我在制作新表后确实提交了。

当我登录到 tb1 时,我感到困惑,我能够在 tb2 中的表中添加一列。有任何想法吗?

标签: oracle11g

解决方案


您无法登录到表空间。而且您不会通过表空间来引用表(表可以存在于多个表空间中或不存在表空间中)。如果您指的是 table tb2.new_table,那意味着它tb2是模式的名称,而不是表空间的名称。表空间与权限无关,它们只是物理数据文件的集合。架构确实会影响权限。

您似乎在 schema2 中创建了一个新表,但没有授予 user1 对该表执行任何操作的权限。假设是这种情况,因为 user2 运行命令

grant select on new_table to user1

然后user1应该能够

select * from user2.new_table

如果您希望 user1 能够在 中插入、更新和/或删除数据new_table,您还需要授予这些权限,即

grant insert, update, delete on new_table to user1

推荐阅读