Oracle - all_tables 不完整?

too*_*oop 5 sql database oracle oracle11g

为什么all_tables不显示实际包含所有表的列表?

我可以做select * from blah;并且desc blah。但这样做select * from all_tables where lower(table_name) = 'blah';会返回 0 行。

blah 不是同义词或视图,而是表。

是否需要运行特定的统计命令,以便我的用户可以查询的所有表都出现在其中all_tables

Big*_* Ed 4

“BLAH”可能是引用不同名称的表或视图的同义词。您可以尝试以下语句来看看发生了什么。

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;
Run Code Online (Sandbox Code Playgroud)

我在我的系统上运行它并看到了这个输出(名称被更改以保护穷人)。

OWNER   OBJECT_NAME    OBJECT_TYPE
------- -------------- -----------
PROD    T_BLAH         TABLE
PUBLIC  BLAH           SYNONYM
Run Code Online (Sandbox Code Playgroud)

HTH。