2017/12/07
ORACLEにおけるパーティション化しているテーブルの一覧の確認方法について、本記事では解説していきます。
sponsored link
パーティションテーブル一覧の確認方法
パーティションテーブル一覧を確認するためには、静的データディクショナリビューであるUSER_TABLES、ALL_TABLES、DBA_TABLESを検索します。
USER_TABLESは、接続しているユーザーに属するテーブルの情報を確認できます。
ALL_TABLESは、接続しているユーザーがアクセスできるテーブルの情報を確認できます。
DBA_TABLESは、全ユーザーのテーブルの情報を確認できますが、DBAロールが付与されているユーザーでないと検索できません。
ただし、上記の静的データディクショナリビューは通常のパーティション化していないテーブル情報も含んでいるので、条件を指定します。
具体的には、PARTITIONEDの項目がYESのデータだけを抽出します。
以下、具体的な検索SQLとサンプルの出力結果です。
1 2 3 4 5 6 7 8 9 10 |
-- パーティションテーブルの一覧 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とサンプルの出力結果です。
1 2 3 4 5 6 7 8 9 10 11 12 |
-- パーティションテーブル(パーティション名含む)の一覧 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も出力するとよいです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
-- パーティションテーブルの一覧 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という項目は存在しないのでご注意ください。