1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

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列まで指定できます。
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?