oracle

複数列リスト・パーティション・テーブル(Oracle Database 12c Release 2新機能)を試す

More than 1 year has passed since last update.

Oracle Database 12c Release 2の新機能である複数列リスト・パーティション・テーブルを試します。

複数列リスト・パーティション・テーブル

Oracle Database 12c Release 1以前のリスト・パーティション・テーブルでは、パーティション列に指定できる列は1つだけでした。複数列でパーティション化したい場合は、パーティションを更にサブ・パーティションに分割するコンポジット・パーティションを利用する必要がありました。
Oracle Database 12cでは、リスト・パーティションに複数の列を指定できるようになりました。
複数列リスト・パーティション・テーブルは、ヒープ・テーブル、外部テーブルに指定できます。またサブ・パーティションにも指定できます。

自動リスト・パーティション・テーブルの作成

自動リスト・パーティション・テーブルを作成するには、CREATE TABLE文のPARTITION句に複数列を指定するだけです。複数列を指定できるようになったことで、{ALL|DBA|USER}_PART_KEY_COLUMNビューにはテーブルに対して複数の列名が出力されることになります。

SQL> CREATE TABLE plist2 (c1 VARCHAR2(10), c2 VARCHAR2(10), c3 VARCHAR2(10)) PARTITION BY LIST (c1, c2)  (
        PARTITION p1 VALUES ('VALUE#1', 'ITEM#1'),
        PARTITION p2 VALUES ('VALUE#2', 'ITEM#2'),
        PARTITION pd VALUES (DEFAULT)
     );

Table created.

SQL> SELECT COLUMN_NAME FROM USER_PART_KEY_COLUMNS WHERE NAME='PLIST2' ;

COLUMN_NAME
------------------------------
C1
C2

自動リスト・パーティションとの組み合わせ

DEFAULTパーティションが存在しなければ、自動リスト・パーティション・テーブルとも組み合わせることができます。

SQL> ALTER TABLE plist2 DROP PARTITION pd ;

Table altered.

SQL> ALTER TABLE plist2 SET PARTITIONING AUTOMATIC ;

Table altered.

制約

複数列リスト・パーティションには以下の制約があります。
1. パーティション化する複数列のうち、一部だけをDEFAULTと指定することはできません(VALUES ('ABC', DEFAULT)とは書けない)。
2. 最大16列まで指定できます。