パーティションテーブル一覧の確認方法

ORACLE
20160531-1

ORACLEにおけるパーティション化しているテーブルの一覧の確認方法について、本記事では解説していきます。

スポンサーリンク

パーティションテーブル一覧の確認方法

パーティションテーブル一覧を確認するためには、静的データディクショナリビューであるUSER_TABLES、ALL_TABLES、DBA_TABLESを検索します。

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

ただし、上記の静的データディクショナリビューは通常のパーティション化していないテーブル情報も含んでいるので、条件を指定します。
具体的には、PARTITIONEDの項目がYESのデータだけを抽出します。

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

-- パーティションテーブルの一覧
SELECT TABLE_NAME           -- テーブル名
FROM   USER_TABLES
WHERE  PARTITIONED = 'YES'
;

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

パーティション名を含めた一覧の確認方法

パーティション名を含めた一覧を確認するためには、静的データディクショナリビューであるUSER_TAB_PARTITIONS、ALL_TAB_PARTITIONS、DBA_TAB_PARTITIONSを検索します。

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

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

-- パーティションテーブル(パーティション名含む)の一覧
SELECT TABLE_NAME      -- テーブル名
      ,PARTITION_NAME  -- パーティション名
FROM   USER_TAB_PARTITIONS
;

TABLE_NAME      PARTITION_NAME
--------------- ---------------
TEST_TABLE1     TEST_TABLE1_01
TEST_TABLE1     TEST_TABLE1_02
TEST_TABLE2     TEST_TABLE2_01
TEST_TABLE2     TEST_TABLE2_02

注意点

USER_TABLESやUSER_TAB_PARTITIONSを使用する場合は、テーブル名は一意になります。

しかし、ALL_TABLESやALL_TAB_PARTITIONS、DBA_TABLESやDBA_TAB_PARTITIONSを使用する場合は、スキーマ間で同名のテーブルが存在する場合もあります。

そのため、スキーマ名が入るOWNERも出力するとよいです。

-- パーティションテーブルの一覧
SELECT OWNER                -- スキーマ名
      ,TABLE_NAME           -- テーブル名
FROM   ALL_TABLES
WHERE  PARTITIONED = 'YES'
;

OWNER           TABLE_NAME
--------------- ---------------
TEST_USER1      TEST_TABLE1
TEST_USER1      TEST_TABLE2
TEST_USER2      TEST_TABLE1
TEST_USER2      TEST_TABLE2

なお、USER_TABLESやUSER_TAB_PARTITIONSには、OWNERという項目は存在しないのでご注意ください。

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