SELECT owner, table_name
FROM dba_tables
これは、DBA_TABLES
にアクセスできることを前提としています。 データディクショナリビュー。これらの特権を持っていないが必要な場合は、DBAがそのテーブルに対する特権を明示的に付与するように要求するか、DBAがSELECT ANY DICTIONARY
を付与するように要求できます。 特権またはSELECT_CATALOG_ROLE
ロール(どちらの場合も、任意のデータディクショナリテーブルをクエリできます)。もちろん、SYS
などの特定のスキーマを除外することもできます。 およびSYSTEM
おそらく気にしないOracleテーブルが多数あります。
または、DBA_TABLES
にアクセスできない場合 、ALL_TABLES
を介してアカウントがアクセスできるすべてのテーブルを確認できます ビュー:
SELECT owner, table_name
FROM all_tables
ただし、これはデータベースで使用可能なテーブルのサブセットである可能性があります(ALL_TABLES
ユーザーにアクセスが許可されているすべてのテーブルの情報が表示されます)。
アクセスできるテーブルではなく、自分が所有するテーブルのみに関心がある場合は、USER_TABLES
を使用できます。 :
SELECT table_name
FROM user_tables
USER_TABLES
以降 所有しているテーブルに関する情報のみがあり、OWNER
はありません。 列–所有者は、定義上、あなたです。
Oracleには、多数のレガシーデータディクショナリビューもあります-TAB
、DICT
、TABS
、およびCAT
たとえば、それを使用できます。一般に、スクリプトをOracle 6にバックポートする必要が絶対にない限り、これらのレガシービューを使用することはお勧めしません。Oracleはこれらのビューを長い間変更していないため、新しいタイプのオブジェクトで問題が発生することがよくあります。たとえば、TAB
およびCAT
ビューは両方とも、[DBA|ALL|USER]_TABLES
の間に、ユーザーのごみ箱にあるテーブルに関する情報を表示します。 ビューはすべてそれらを除外します。 CAT
TABLE_TYPE
を使用したマテリアライズドビューログに関する情報も表示されます あなたが本当に望んでいるものではない可能性が高い「テーブル」の。 DICT
テーブルと同義語を組み合わせて、オブジェクトの所有者を教えてくれません。