2012-03-09 9 views
2

all_tablesには実際にすべてのテーブルのリストが含まれていますが表示されません。Oracle - all_tablesは完全ではありませんか?

select * from blah;desc blahとすることができます。 しかし、select * from all_tables where lower(table_name) = 'blah';を実行すると0行が返されます。

blahは、シノニムまたはビューではなく表です。

私のユーザーが照会できるすべてのテーブルがall_tablesに表示されるように、実行する必要がある特定のstatsコマンドがありますか?

+0

ユーザーにはDBA権限がありますか? –

+9

私はあなたを信じていません。 BLAHというテーブルがあり、権限がある場合、 'select * from all_tables where lower(table_name)= 'blah';は行を返します。あなたのコードのどこかであなたは間違いを犯しました。それを確認してください。 – APC

+4

「blah」はビューまたは同義語になります。 – Glenn

答えて

1

何が起こっているのかを確認するには、次の文を試してみてください。

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。

関連する問題