パーティション索引の作成と管理

グローバルパーティション索引の作成

  • グローバル索引は、レンジ・パーティション化またはハッシュ・パーティション化が可能である。
  • どのタイプのパーティション表にも定義できる。
  • 通常、グローバル索引を、基礎となる表と同一レベルでパーティション化することはない。基礎となる表と同一レベルでパーティション化する索引は、LOCALとして作成する必要がある。
グローバルレンジパーティション索引
CREATE INDEX IDX_TAB_RANGE_PART_1 ON TAB_RANGE_PART(ORDER_DATE)
    GLOBAL PARTITION BY RANGE(ORDER_DATE) (
        PARTITION IDX_TAB_RANGE_PART_1_P1    VALUES LESS THAN ( TO_DATE('20090201','YYYYMMDD')) TABLESPACE PART01,
        PARTITION IDX_TAB_RANGE_PART_1_P2    VALUES LESS THAN ( TO_DATE('20090301','YYYYMMDD')) TABLESPACE PART02,
        PARTITION IDX_TAB_RANGE_PART_1_P3    VALUES LESS THAN ( TO_DATE('20090401','YYYYMMDD')) TABLESPACE PART03,
        PARTITION IDX_TAB_RANGE_PART_1_P4    VALUES LESS THAN ( TO_DATE('20090501','YYYYMMDD')) TABLESPACE PART04,
        PARTITION IDX_TAB_RANGE_PART_1_P5    VALUES LESS THAN ( MAXVALUE ) TABLESPACE PART05)
COMPUTE STATISTICS;
グローバルハッシュパーティション索引
CREATE INDEX IDX_TAB_RANGE_PART_2 ON TAB_RANGE_PART(ORDER_ID)
    GLOBAL PARTITION BY HASH(ORDER_ID) (
        PARTITION IDX_TAB_RANGE_PART_2_P1 TABLESPACE PART01,
        PARTITION IDX_TAB_RANGE_PART_2_P2 TABLESPACE PART02,
        PARTITION IDX_TAB_RANGE_PART_2_P3 TABLESPACE PART03,
        PARTITION IDX_TAB_RANGE_PART_2_P4 TABLESPACE PART04
    );

ローカルパーティション索引

ローカル同一キー索引
  • 索引列の左プリフィックスでパーティション化されているローカル索引は、同一キー索引である。
  • ローカル同一キー索引は、一意にも非一意にもできる。

下記は、ORDER_IDでハッシュパーティション化されたTAB_HASH_PARTにローカル同一キー一意索引を作成する。

PROD(TOM)>DESC TAB_HASH_PART
 名前                                    NULL?    型
 ----------------------------------------- -------- ----------------------------
 ORDER_ID                                           NUMBER            -- ハッシュパーティションキー
 ORDER_DATE                                         DATE
 BOOK_NO                                   NOT NULL VARCHAR2(20)
 BOOK_TYPE                                 NOT NULL VARCHAR2(20)
 BOOK_CNT                                  NOT NULL NUMBER
 REMARKS                                            VARCHAR2(40)
 
PROD(TOM)>CREATE UNIQUE INDEX IDX_TAB_HASH_PART_1 ON TAB_HASH_PART(ORDER_ID) LOCAL COMPUTE STATISTICS;
 
索引が作成されました。
 
PROD(TOM)>

下記は索引列の左プリフィックスでパーティション化されているので、ローカル同一キー索引である。
CREATE INDEX IDX_TAB_HASH_PART_2 ON TAB_HASH_PART(ORDER_ID,ORDER_DATE) LOCAL TABLESPACE INDX COMPUTE STATISTICS;
ローカル非同一キー索引
  • 索引列の左プリフィックスでパーティション化されていないローカル索引は、非同一キー索引である。
  • パーティション化キーが索引キーのサブセットでない場合、一意ローカル非同一キー索引は定義できない。

下記は左プリフィックスでパーティション化されていないから、非同一キー索引である。

CREATE INDEX IDX_TAB_HASH_PART_3 ON TAB_HASH_PART(ORDER_DATE) LOCAL TABLESPACE INDX COMPUTE STATISTICS;

ローカル非同一キービットマップ索引
CREATE BITMAP INDEX IDX_TAB_HASH_PART_4 ON TAB_HASH_PART(BOOK_TYPE) LOCAL;

ローカル非同一キー一意索引、パーティション化キーが索引キーのサブセットに含まれる必要がある。
CREATE UNIQUE INDEX IDX_TAB_HASH_PART_5 ON TAB_HASH_PART(ORDER_DATE,ORDER_ID) LOCAL;

パーティション索引の管理

索引パーティションの追加(グローバルハッシュのみ)

ALTER INDEX … ADD PARTITION

  • ローカル索引には、パーティションを明示的に追加できない。
  • 最高位のパーティションのパーティション・バウンドは常にMAXVALUEであるため、レンジ・パーティション化されたグローバル索引にはパーティションを追加できない。
索引パーティションの削除(グローバルレンジ)

ALTER INDEX … DROP PARTITION

  • ローカル索引には、パーティションを明示的に削除できない。
  • グローバル索引のパーティションにデータが含まれている場合にそのパーティションを削除すると、次の最高位パーティションがUNUSABLEになる。
索引パーティションの再作成(グローバルレンジとローカル)

グローバル索引パーティションの再作成:
ALTER INDEX … REBUILD PARTITION
ローカル索引パーティションの再作成:
ALTER INDEX …REBUILD PARTITION/SUBPARTITION
ALTER TABLE …MODIFY PARTITION/SUBPARTITION …REBUILD UNUSABLE LOCAL INDEXES

索引パーティションの名前変更

ALTER INDEX … RENAME SUBPARTITION … TO …

索引パーティションの分割(グローバルレンジのみ)

ALTER INDEX … SPLIT PARTITION … AT ( 値 ) INTO PARTITION …, PARTITION …)

パーティション索引の情報表示

ビュー 説明
DBA_PART_INDEXES パーティション索引のパーティション化情報が表示される。
DBA_IND_PARTITIONS パーティション・レベルのパーティション化情報、パーティションの記憶域パラメータ、統計が表示される。
DBA_IND_SUBPARTITIONS サブパーティション・レベルのパーティション化情報、パーティションの記憶域パラメータ、統計が表示される。
DBA_SUBPARTITION_TEMPLATES 既存のサブパーティション・テンプレートに関する情報が表示される。
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License