ヘッダーをスキップ
Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス
11g リリース1(11.1)
E05686-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

87 DBMS_PCLXUTIL

DBMS_PCLXUTILパッケージは、パーティション単位でローカル索引を作成するためのパーティション内並列性を提供します。 各パーティションには1つのスレーブ・プロセスしか使用できません。DBMS_PCLXUTILは、ローカル索引の作成でパーティション数によって並列度が制限されることを回避します。


関連項目:

パーティションおよび索引に関しては、いくつかのルールがあります。 詳細は、『Oracle Database概要』および『Oracle Database管理者ガイド』を参照してください。

この章では、次の項目について説明します。


DBMS_PCLXUTILの使用方法


概要

DBMS_PCLXUTILDBMS_JOBパッケージを使用して、パーティション表のローカル索引を作成するための高い並列度を提供します。 これは、バックグラウンド・プロセスを使用した(DBMS_JOBを使用)非同期のパーティション間並列性と、パラレル問合せスレーブ処理を使用したパーティション内並列性の組合せで達成されます。

DBMS_PCLXUTILは、レンジ・パーティション化およびレンジ−ハッシュ・コンポジット・パーティション化の両方で機能します。

DBMS_PCLXUTILパッケージは、次のDBAタスク中に使用できます。

  1. ローカル索引の作成

    プロシージャBUILD_PART_INDEXは、ローカル索引のディクショナリ情報がすでに存在していることを前提としています。これは、UNUSABLEオプションを持つCREATE INDEX SQLコマンドを発行して行います。

    CREATE INDEX <idx_name> on <tab_name>(...) local(...) unusable;

これにより、索引作成で時間がかかるディクショナリ・エントリの作成を、索引自体を作成せずに行うことができます。 そして、プロシージャBUILD_PART_INDEXを起動して、指定の並列度でローカル索引の同時作成を行います。

    EXECUTE dbms_pclxutil.build_part_index(4,4,<tab_name>,<idx_name>,FALSE);

コンポジット・パーティションについて、プロシージャは、そのコンポジット表のすべてのサブパーティションに対するローカル索引を自動的に作成します。

  1. ローカル索引のメンテナンス

    目的のパーティションを使用可能または使用禁止にマークし、BUILD_PART_INDEXプロシージャもローカル索引の選択的な再作成を可能にします。 force_optパラメータは、これを上書きし、すべてのパーティションに対するローカル索引の作成方法を提供します。

    ALTER INDEX <idx_name> local(...) unusable;

目的の(サブ)パーティション(UNUSABLEとマークされています)のみを再作成します。

    EXECUTE dbms_pclxutil.build_part_index(4,4,<tab_name>,<idx_name>,FALSE);

force_opt = TRUEを使用して、すべての(サブ)パーティションを再作成します。

    EXECUTE dbms_pclxutil.build_part_index(4,4,<tab_name>,<idx_name>,TRUE);

進捗レポートが作成され、プログラムの終了時に出力がスクリーンに表示されます(DBMS_OUTPUTパッケージは、最初にメッセージをバッファに書き込み、そのバッファをプログラムの終了時のみスクリーンにフラッシュするためです)。


使用上の注意

DBMS_PCLXUTILは、各パーティションに対してジョブを実行します。 INIT.ORAのパラメータJOB_QUEUE_PROCESSESを正しく設定して同時ジョブの数を制限するのは、ユーザーまたはDBAの責任です。正しい構文についての最小限度のエラー・チェックがあります。ジョブ・キューに報告されるどのエラーもトレース・ファイルを処理します。


ルールおよび制限


注意:

レンジ・パーティション化の最小互換モードは8.0で、レンジ−ハッシュ・コンポジット・パーティション化の最小互換モードは8i です。

DBMS_PCLXUTILパッケージはDBMS_JOBパッケージを使用しているため、DBMS_JOBに関する次の制限事項があることに注意してください。

    job_queue_processes=n   #the number of background processes = n

DBMS_PCLXUTILサブプログラムの要約

表87-1 DBMS_PCLXUTILパッケージのサブプログラム

サブプログラム 説明

BUILD_PART_INDEXプロシージャ


パーティション単位でローカル索引を作成するためのパーティション内並列性を提供します。



BUILD_PART_INDEXプロシージャ

このプロシージャは、パーティション単位でローカル索引を作成するためのパーティション内並列性を提供します。

構文

DBMS_PCLXUTIL.BUILD_PART_INDEX (
   jobs_per_batch  IN NUMBER   DEFAULT 1,
   procs_per_job   IN NUMBER   DEFAULT 1,
   tab_name        IN VARCHAR2 DEFAULT NULL,
   idx_name        IN VARCHAR2 DEFAULT NULL,
   force_opt       IN BOOLEAN  DEFAULT FALSE);

パラメータ

表87-2 BUILD_PART_INDEXプロシージャのパラメータ

パラメータ 説明

jobs_per_batch

パーティション単位のローカル索引同時作成の数。

procs_per_job

各ローカル索引作成に利用するパラレル問合せスレーブ数(1 <= procs_per_job <= max_slaves)。

tab_name

パーティション表の名前(表が存在しない、またはパーティション化されていない場合は例外が発生します)。

idx_name

ローカル索引に指定する名前(ローカル索引が表tab_nameに作成されていない場合は例外が発生します)。

force_opt

TRUEの場合は、すべてのパーティション索引の再作成を強制します。それ以外の場合は、UNUSABLEにマークされたパーティションのみを再作成します。


PROJ001PROJ002の2つのパーティション、およびローカル索引IDXを持つ表PROJECTが作成されるとします。

プロシージャBUILD_PART_INDEX(2,4,'PROJECT','IDX',TRUE)へのコールによって、次の出力が作成されます。

SQLPLUS> EXECUTE dbms_pclxutil.build_part_index(2,4,'PROJECT','IDX',TRUE);
Statement processed.
INFO: Job #21 created for partition PROJ002 with 4 slaves
INFO: Job #22 created for partition PROJ001 with 4 slaves