无法从其他架构查询USER_TABLES

时间:2016-02-10 12:51:29

标签: sql oracle11g

我有两个架构TESTDEV。我正在使用TEST模式,我希望在SDB模式中获取以DEV开头的表列表。所以我使用了以下查询:

      SELECT TABLE_NAME FROM DEV.USER_TABLES WHERE UPPER(TABLE_NAME) LIKE 'SDB%';

但我得到ORA-00942 error。这是补助金的问题吗?或者是否有任何其他方法可以获取DEV架构中的表列表。

2 个答案:

答案 0 :(得分:2)

USER_TABLESSYS视图,仅包含您拥有的对象。它并不作为每个用户架构的一部分存在(因此没有DEV.USER_TABLES),并且您无法在其中看到其他用户的对象。请改为使用ALL_TABLES,指定所有者:

SELECT TABLE_NAME FROM ALL_TABLES
WHERE OWNER = 'DEV'
AND UPPER(TABLE_NAME) LIKE 'SDB%';

如果您拥有该表,则只能在其他模式中查看该表。如果你没有,那么它就不会被列出;在这种情况下,如果您有权查看,则可以查询DBA_TABLES

答案 1 :(得分:2)

你需要这个:

SELECT TABLE_NAME FROM all_tables where OWNER = 'DEV' and UPPER(TABLE_NAME) LIKE 'SDB%';

all_tables包含您有权访问的数据库中的所有表,以便您选择该表。

你得到的是因为这不是一个特定的用户表,你不能从dev.ORACLE TABLES中选择,当你从那里选择时,不要指定一个模式