テーブル一覧の確認方法

ORACLE

ORACLEにおいて、テーブルの一覧を確認したいことがあります。
また、テーブルデータが格納されている統計情報や平均レコード長について確認が必要な時があります。

そんなときに使用するUSER_TABLES(ALL_TABLES・DBA_TABLES)について、本記事では解説していきます。

スポンサーリンク

テーブル情報の把握方法

テーブル情報を把握するためには、静的データディクショナリビューを検索します。

テーブル情報を確認するためには、USER_TABLES、ALL_TABLES、DBA_TABLESを検索します。

USER_TABLESは、接続しているユーザーに属するテーブルの情報を確認できます。
ALL_TABLESは、接続しているユーザーがアクセスできるテーブルの情報を確認できます。
DBA_TABLESは、全ユーザーのテーブルの情報を確認できますが、DBAロールが付与されているユーザーでないと検索できません。

以下、具体的な検索SQLとサンプルの出力結果です。

-- テーブルの一覧
SELECT TABLE_NAME      -- テーブル名
FROM   USER_TABLES
;

TABLE_NAME
---------------
TEST_TABLE1
TEST_TABLE2
TEST_TABLE3
スポンサーリンク

統計情報の確認

統計情報を確認するための検索SQLとサンプルの出力結果です。

-- 統計情報確認
SELECT TABLE_NAME      -- テーブル名
      ,TO_CHAR(LAST_ANALYZED,'YYYYMMDD HH24MISS') LAST_ANALYZED
                       -- 統計情報取得日時
      ,NUM_ROWS        -- 行数
      ,BLOCKS          -- 使用ブロック数(HWM)
      ,AVG_ROW_LEN     -- 行の平均の長さ(バイト)
FROM   USER_TABLES
;

TABLE_NAME      LAST_ANALYZED    NUM_ROWS BLOCKS AVG_ROW_LEN
--------------- ---------------- -------- ------ -----------
TEST_TABLE1     20160524 235901       100      1          40
TEST_TABLE2     20160524 235902       200      2          50
TEST_TABLE3     20160524 235903       300      3          60

LAST_ANALYZEDには、統計情報取得した日時が入ります。
NUM_ROWSには、統計情報を取得した際の行数が入ります。ただし、統計情報取得時に全データをサンプルしていない場合は、大まかな値が入り、正確な行数が入らないので注意が必要です。
BLOCKSには、統計情報を取得した際の使用しているブロック数が入ります。
AVG_ROW_LENには、統計情報を取得した際の1行あたりの平均長(バイト)が入ります。

注意点として、上記項目は統計情報を取得した際に設定される項目で、統計情報取得した後のデータ変動には対応していません。
また、統計情報を取得していない場合は、NULLが入っています。

その他の情報

その他にも取得できる項目として代表的なものは、以下があります。

TABLESPACE_NAMEには、データが格納されているテーブルスペース名が入ります。
PCT_FREEには、ブロック内の空き領域の最小割合が入ります。
PARTITIONEDには、表がパーティション化されているかどうか(YES/NO)が入ります。

タイトルとURLをコピーしました