sql >> データベース >  >> RDS >> Oracle

Oracleですべてのテーブルを一覧表示する方法

    ほとんどのリレーショナルデータベースと同様に、基になるメタデータを表示し、実際のテーブルリストとデータベースの所有権を確認する必要がある場合があります。ありがたいことに、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 役割。これらの特権の付与の詳細については、公式ドキュメントを参照してください。


    1. 2つの既知の文字列から文字列を選択するSQLクエリ

    2. EM12cでDB12cのリポジトリが可能になりました

    3. レコードがテーブルに追加されたときに記録する日付/タイムスタンプ?

    4. ウェビナー:PostgreSQL11の新機能[フォローアップ]