查询 Oracle 数据库表清单时出现问题:“表或视图不存在”

3

在我的程序中,我需要访问Oracle 11g数据库的模式。我一直在尝试使用类似于以下查询的方式获取表格列表:

SELECT t.TABLE_NAME, t.OWNER
FROM ALL_TABLES t
WHERE t.DROPPED = 'NO'
ORDER BY t.TABLE_NAME

查询已经成功并返回了一些表的列表。不幸的是,在使用返回的表名查询某些表时,我收到了以下错误信息:
ORA-00942: 表或视图不存在
这个错误是什么原因造成的?可能是权限问题吗?
另一个问题是,我有些困惑是否有可能存在两个或多个同名的表,我如何区分它们。需要注意吗?
我正在使用.NET中的Oracle.DataAccess提供程序连接到数据库。它是一个远程服务器,我非常有限的访问权限。
3个回答

6

这可能与权限有关。但也可能是因为表位于不同的模式中,且没有其别名。如果您在表名前加上所有者限定符,是否可以正常工作?例如,使用 select from [owner].[table_name]。


3

仅仅因为您可以访问ALL_TABLES视图并不意味着您能够实际选择通过此视图检索的表。您需要对这些表具有适当的授予选择权限才能选择它们。

只要它们属于不同的模式,2个表可以具有相同的名称(范围实际上比表更广泛,一个模式不能有两个具有相同名称的对象(表、视图...))


0

是的,这是一项安全功能 - 如果您没有从表中选择的权限,Oracle通常甚至不会向您确认它的存在(普通用户无法在从ALL_选择中看到东西,除非由DBA授予)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接