all_tables
如何显示实际上不包含所有表的列表?
我可以select * from blah;
和desc blah
。
但是select * from all_tables where lower(table_name) = 'blah';
会返回0行。
blah不是同义词或视图,而是表格。
是否需要运行特定的stats命令,以便我的用户可以查询的所有表都显示在all_tables
中?
答案 0 :(得分:3)
您可以尝试以下语句来查看正在发生的事情。
select owner, object_name, object_type
from all_objects
where object_name = 'BLAH'
union
select o.owner, o.object_name, o.object_type
from all_synonyms s, all_objects o
where synonym_name like 'BLAH'
and o.owner = s.table_owner
and o.object_name = s.table_name;
我在我的系统上运行了这个输出(更改名称以保护贫困人员)。
OWNER OBJECT_NAME OBJECT_TYPE
------- -------------- -----------
PROD T_BLAH TABLE
PUBLIC BLAH SYNONYM
HTH。
答案 1 :(得分:0)
我确定对象名称存在混淆。 请使用对象名称
检入DBA_OBJECTS
USER_TABLES-拥有的表
ALL_TABLES-表拥有,其他用户拥有表拥有权,可以访问 你
DBA_TABLES-数据库中的所有表
答案 2 :(得分:-2)
尝试断开并重新连接会话,然后查看结果是否更改。