ほとんどのリレーショナルデータベースと同様に、基になるメタデータを表示し、実際のテーブルリストとデータベースの所有権を確認する必要がある場合があります。ありがたいことに、Oracleでこの比較的単純なタスクを実行するには複数の方法があるため、以下の各オプションを簡単に調べて、ニーズに最適なものを見つけます。
Oracleデータディクショナリとは何ですか?
Oracleのデータディクショナリは、スキーマ、ユーザー、権限、さらには監査データなど、データベースに関する有用な情報を提供する読み取り専用テーブルのコレクションです。これらの保存されたディクショナリの値は、データを変更するサーバーでステートメントが実行されるたびに、Oracleによって自動的に更新されます。
そこから、読み取り専用ディクショナリは、他の標準テーブルと同じように読み取りおよび照会できます。これは、以下に示すように、いくつかの非常に便利な機能を提供します。
最も基本的なレベルでは、所有されているすべてのテーブルのリストを表示することをお勧めします。 現在のOracleユーザーによる。これは、単純なSELECT
で実行できます。 USER_TABLES
でクエリを実行します データディクショナリ。
Oracleに接続したら、次のステートメントを発行します。
SELECT
table_name, owner
FROM
user_tables
ORDER BY
owner, table_name
これにより、owner
で指定されているように、現在のユーザーが所有しているすべてのテーブルのリストが返されます。 列。
現在のOracleユーザーがアクセスできるテーブルのみに関心がある状況 所有権に関係なく、ALL_TABLES
を使用します 代わりにデータディクショナリ。
SELECT
table_name, owner
FROM
all_tables
ORDER BY
owner, table_name
ユーザーがリモートでアクセスできるすべてのものを表示しているため、このクエリは興味のある結果よりもはるかに多くの結果を返す可能性があります。そのため、適切なowner
を指定して、クエリを制限することをお勧めします。 、そのように:
SELECT
table_name, owner
FROM
all_tables
WHERE
owner='schema_name'
ORDER BY
owner, table_name
最後に、絶対にすべてのテーブルを表示する必要がある場合 システムでは、素晴らしく強力なDBA_TABLES
を探すだけです。 データディクショナリ。
SELECT
table_name, owner
FROM
dba_tables
WHERE
owner='schema_name'
ORDER BY
owner, table_name
この最後のDBA_TABLES
に注意することが重要です 辞書には、現在のユーザーが持っている以上のユーザー特権が必要な場合があります。必要に応じて、SELECT ANY DICTIONARY
を付与する必要がある場合があります 特権またはSELECT_CATALOG_ROLE
役割。これらの特権の付与の詳細については、公式ドキュメントを参照してください。