2017/12/07
ORACLEにおいて、テーブルの一覧を確認したいことがあります。
また、テーブルデータが格納されている統計情報や平均レコード長について確認が必要な時があります。
そんなときに使用するUSER_TABLES(ALL_TABLES・DBA_TABLES)について、本記事では解説していきます。
sponsored link
テーブル情報の把握方法
テーブル情報を把握するためには、静的データディクショナリビューを検索します。
テーブル情報を確認するためには、USER_TABLES、ALL_TABLES、DBA_TABLESを検索します。
USER_TABLESは、接続しているユーザーに属するテーブルの情報を確認できます。
ALL_TABLESは、接続しているユーザーがアクセスできるテーブルの情報を確認できます。
DBA_TABLESは、全ユーザーのテーブルの情報を確認できますが、DBAロールが付与されているユーザーでないと検索できません。
以下、具体的な検索SQLとサンプルの出力結果です。
1 2 3 4 5 6 7 8 9 10 |
-- テーブルの一覧 SELECT TABLE_NAME -- テーブル名 FROM USER_TABLES ; TABLE_NAME --------------- TEST_TABLE1 TEST_TABLE2 TEST_TABLE3 |
統計情報の確認
統計情報を確認するための検索SQLとサンプルの出力結果です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
-- 統計情報確認 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)が入ります。