索引を変更します。ALTER INDEX文は次のように使用できます。
- 索引ノードの特性の変更(ソート索引のみ)
- 索引を含む記憶域の名前の変更
- .aijファイルおよび.rujファイルへの記録の有効化/無効化の切替え
- 索引パーティションの変更
- パーティション名の変更
- パーティションの説明の変更
- 索引をUNIQUEにするかどうかの指定
次の変更はできません。
- 索引を構成する列
- ハッシュ索引からソート索引
- ソート索引からハッシュ索引
- ランクなしソート索引からランク付きソート索引
- ランク付きソート索引からランクなしソート索引
- ランク付きソート索引の複製圧縮
ALTER INDEX文は次の環境で使用できます。
- 対話型SQL内
- プリコンパイル対象のホスト言語プログラムに埋め込まれる場合
- SQLモジュールのプロシージャの一部として
- 動的SQLで動的に実行される文として
ADD PARTITION partition-name
名前付きパーティションを既存のハッシュ索引に追加します。パーティション名は、変更される索引内で一意である必要があります。同一ALTER INDEX文内には他の句を使用できません。ADD PARTITION句の使用方法の詳細は、「使用方法」を参照してください。
BUILD ALL PARTITIONS
この句を作成ペンディング状態にある索引(MAINTENANCE IS ENABLED DEFERREDを使用して作成)に対して指定すると、すべて不完全なパーティションが作成されます。索引が作成ペンディング状態にない場合、この文は正常に完了し、警告が出されます。同一ALTER INDEX文内には他の句を使用できません。
BUILD PARTITION partition-name
この句を作成ペンディング状態にある索引(MAINTENANCE IS ENABLED DEFERREDを使用して作成)に対して指定すると、指定されたパーティションが作成されます。索引が作成ペンディング状態にない場合、この文は正常に完了し、警告が出されます。同一ALTER INDEX文内には他の句を使用できません。
COMMENT IS 'string'
索引に関するコメントを追加します。SQLでは、SHOW INDEX文の実行時にコメントのテキストが表示されます。コメントは一重引用符(')で囲み、コメント内の複数の行はスラッシュ(/)で区切ります。DROP PARTITION partition-name
名前付きパーティション内のデータをマップ内の次のパーティションへ移行し、その名前付きパーティションを削除するように指定します。索引内の最後のパーティションは削除できません。また、被参照記憶域は削除されず、その記憶域に格納されている索引パーティションのみ削除されます。DUPLICATES ARE ALLOWED
一意索引を非一意索引に変換します。この方法で変更された索引では、キー値を索引に複製できます。ただし、ALTER INDEX文をコミットすると、索引を削除して再定義する以外に変更を元に戻す方法はありません。IN area-spec
このIN area-specをADD PARTITION句の中に指定すると、索引に新規のパーティションが挿入されます。WITH LIMIT OF句またはOTHERWISE句を指定しない場合は、IN area-spec句では新規のパーティションが最後尾に作成されます。このIN area-specをSTORE句の一部として指定すると、いずれか1つの記憶域に索引が直接関連付けられ、その索引内のエントリすべてが、指定した記憶域に格納されます。
index-name
索引の名前です。index-store-clause
索引の記憶域マップ定義です。複数ファイルのデータベース内の索引にかぎり、STORE句を指定できます。STORE句では、索引エントリの格納に使用する記憶域ファイルを指定できます。記憶域マップ定義を省略すると、デフォルトでは、索引のすべてのエントリがデフォルトの記憶域に格納されます。
index-store-clauseの引数の詳細は、「CREATE INDEX文」を参照してください。
LOGGING
NOLOGGING
LOGGING句は、新規索引のパーティションに対するアップデートがリカバリ・ユニット・ジャーナル・ファイル(.ruj)とアフター・イメージ・ジャーナル・ファイル(.aij)に記録されることを指定します。NOLOGGING句は、新規索引のパーティションに対するアップデートがリカバリ・ユニット・ジャーナル・ファイル(.ruj)とアフター・イメージ・ジャーナル・ファイル(.aij)に記録されないことを指定します。
STORE句を使用しない場合、これらの属性がALTER INDEX文の設定を指定します。
LOGGING句およびNOLOGGING句は相互に排他的です。1つのみ指定してください。デフォルトはLOGGING句です。
MAINTENANCE IS DISABLED
指定した索引を削除せず、無効にします。規模が非常に大きなデータベースを管理している場合、索引が破損したり、索引が問合せの最適化に適さない場合があります。また、索引を定義した表のサイズが非常に大きい場合、DROP INDEX文の実行に時間がかかることがあります。ALTER INDEX文のMAINTENANCE IS DISABLED句を使用すると索引が無効になるため、オプティマイザで使用されなくなり、メンテナンスも行われません。これにより、後で表が使用中の場合でもDROP INDEX文を実行できます。
無効になった索引は、REBUILD PARTITION句を使用して再度有効にできます。
索引を無効にするには、その索引が定義されている表に対するDROP権限が必要であり、その表へのアクティブな問合せは必要ありません。
MAINTENANCE IS ENABLED DEFFERED
この句を使用して作成した索引には、表の現在行の索引キーが含まれません。(ALTER INDEX...BUILDを使用して)索引が作成されるまで、索引は作成ペンディング状態に置かれます。作成ペンディング状態の索引がある表は、INSERT文、DELETE文、またはUPDATE文では更新できません。MAINTENANCE IS ENABLED IMMEDIATE
CREATE INDEXのデフォルトの動作です。ALTER INDEXにこの句を指定すると、作成ペンディング状態の索引を完全に使用可能な状態にできます。MOVE PARTITION partition-name TO area-spec
名前付きパーティション内のデータをarea-spec句で識別されるパーティションへ移動し、データの移行後に現在のパーティションを削除するように指定します。たとえば、相当数の複合領域が拡張されている場合、この句を指定すると、ハッシュ索引の単一のパーティションをより大きい記憶域に移動できます。同一ALTER INDEX文内には他の句を使用できません。
NODE SIZE number-bytes
ソート索引における各索引ノードのサイズ(バイト)を指定します。この引数は、ハッシュ索引を参照しているALTER INDEX文には指定できません。NODE SIZE句の詳細は、「CREATE INDEX文」を参照してください。この新しいノード・サイズは、既存の索引には適用されません。ただし、それ以降の再構築や、データベースを再構築する際のEXPORT/IMPORTでは使用されます。
PARTITION name
パーティションに名前を付けます。言語がSQL99に設定されている場合、または引用ルールがSQL99に設定されている場合、名前はデリミタ付き識別子として使用できます。パーティション名は索引内で一意である必要があります。この句を指定しない場合は、Oracle Rdbでパーティションのデフォルト名が生成されます。パーティション名は、データベースに格納され、検証されます。PERCENT FILL percentage
各索引ノードの最大使用率をそのサイズの割合で指定します。この引数は、ハッシュ索引を参照しているALTER INDEX文には指定できません。有効範囲は1〜100パーセントです。デフォルトは70パーセントです。PERCENT FILL句およびUSAGE句は両方とも、索引ノードを最初にどの程度占有するかを指定します。PERCENT FILL句またはUSAGE句のいずれかを指定し、両方は指定しないでください。
PREFIX CARDINALITY COLLECTION IS DISABLED
これを設定すると、カーディナリティ収集が無効になり、かわりに、適切に調整された索引ツリーを想定した固定スケール・アルゴリズムが使用されます。またこの句のアクションにより、既存の索引列のカーディナリティがゼロに設定されます。PREFIX CARDINALITY COLLECTION IS ENABLED
CREATE INDEXのデフォルトの動作です。Oracle Rdbのオプティマイザでは、索引列のカーディナリティの概算値を収集して、将来の問合せの最適化に役立てます。これらの値を収集するための特別なI/Oは発生せず、したがって、他の索引ノードの隣接したキー値はチェックできません。そのため、これらの索引は不正確になる可能性があります。ただし、通常の問合せの最適化には十分です。現在、PREFIX CARDINALITY COLLECTION DISABLEDに設定されている索引にこの句を使用する場合は、できるかぎり速やかにRMU Collect Optimizer_Statisticsコマンドを実行し、正確な値をロードする必要があります。PREFIX CARDINALITY COLLECTION IS ENABLED FULL
これを設定すると、必要に応じて特別なI/Oの実行がリクエストされ、隣接した索引ノードのキー値の変更がカーディナリティ値に反映されるようになります。現在、PREFIX CARDINALITY COLLECTION DISABLEDまたはENABLEDに設定されている索引にこの句を使用する場合は、できるかぎり速やかにRMU Collect Optimizer_Statisticsコマンドを実行し、正確な値をロードする必要があります。REBUILD ALL PARTITIONS
この句を使用すると、TRUNCATE処理およびBUILD処理を単一のファンクションに組み合せることができます。同一ALTER INDEX文内には他の句を使用できません。REBUILD PARTITION partition-name
この句を使用すると、指定したパーティションに対し、TRUNCATE処理およびBUILD処理を単一のファンクションに組み合せることができます。同一ALTER INDEX文内には他の句を使用できません。RENAME PARTITION partition-name TO new-partition-name
パーティション名を変更します。この句は、すべてのタイプの索引に適用できます。特に、デフォルト・パーティションによりわかりやすい名前を指定する場合に便利です。SHOW INDEX (PARTITION)文を使用してパーティションのデフォルト名を表示します。「例」の項の「例4」を参照してください。同一ALTER INDEX文内には他の句を使用できません。
threshold-clause
threshold-clauseの詳細は、「CREATE INDEX文」を参照してください。TRUNCATE ALL PARTITIONS
この句はTRUNCATE TABLEと同様に機能しますが、1つの索引のみを対象とします。索引は、現在ENABLED IMMEDIATEが指定されている場合、自動的にMAINTENANCE IS ENABLED DEFERRED(作成ペンディング状態)に設定されます。それ以外の場合は、無効な状態のままとなります。同一ALTER INDEX文内には他の句を使用できません。
TRUNCATE PARTITION partition-name
この句は、指定した索引パーティションにのみ機能します。索引は、現在ENABLED IMMEDIATEが指定されている場合、自動的にMAINTENANCE IS ENABLED DEFERRED(作成ペンディング状態)に設定されます。それ以外の場合は、無効な状態のままとなります。同一ALTER INDEX文内には他の句を使用できません。
USAGE UPDATE
USAGE QUERY
更新集約型のアプリケーションまたは問合せ集約型のアプリケーションに適したPERCENT FILL値を指定します。この引数は、ハッシュ索引を参照しているALTER INDEX文には指定できません。USAGE UPDATE引数では、PERCENT FILL値を70パーセントに設定します。USAGE QUERY引数では、PERCENT FILL値を100パーセントに設定します。PERCENT FILL句またはUSAGE句のいずれかを指定し、両方は指定しないでください。
USING (column-name)
複数の記憶域で索引をパーティション化するための制限として値を使用する列を指定します。索引キー・セグメントとして指定されていない列は指定できません。索引キーが複数セグメントである場合、結合されて索引キーを形成する列の一部または全部を含めることができます。列は、索引キーの定義時に指定した順序で指定する必要があります。複数セグメント索引から列サブセットのみを含める場合、索引キーの先頭の列を必ず含めてください。
WITH LIMIT OF (literal)
ASCENDINGが定義されている場合は、特定の記憶域に常駐する索引キーの最大値を指定します。DESCENDINGが定義されている場合は、特定の記憶域に常駐する索引キーに対して最小値が指定されます。索引キーが複数の列で構成されている場合は、USING句にリストされている各列のリテラル値を指定します。WITH LIMIT OF句では、パーティションに対する一意の値セットを新規に指定する必要があります。リスト内のリテラルの数は、USING句の列の数と同じである必要があります。リテラルのデータ型は列のデータ型と一致する必要があります。文字の列の場合は、リテラルを一重引用符で囲みます。
- 索引が同時に問合せに関与している場合、索引を変更しようとすると失敗します。索引を変更する前に、ユーザーはDISCONNECT文でデータベースからデタッチする必要があります。Oracle Rdbが最初に索引などのオブジェクトにアクセスすると、そのオブジェクトにロックがかけられ、ユーザーがそのデータベースを終了するまで解除されません。このオブジェクトを更新しようとしても、もう1人のユーザーがこのオブジェクトにアクセスしているため、「lock conflict on client」のメッセージが表示されます。
同様に、索引の変更中、ALTER文に対してCOMMIT文またはROLLBACK文を使用してトランザクションを完了するまで、ユーザーはその索引に関連する問合せを実行できません。実行しようとすると、LOCK CONFLICT ON CLIENTエラー・メッセージが表示されます。データ定義言語(DDL)操作の実行中は、システム表に対して通常のデータ・ロック・メカニズムが使用されます。(システム表には、データベース内のオブジェクトに関する情報が格納されています。)したがって、オブジェクトの更新中は、そのオブジェクトへの問合せがロックされます。これらのロックは、DDL操作がコミットまたはロールバックされるまで解除されません。- SIZE IS句およびMAPPING VALUES句を使用した索引列のCOMPRESSION句の変更は実行できません。COMPRESSION句を変更するには、索引を削除してから再作成する必要があります。
- パーティションと記憶域との相違には注意が必要です。パーティションは論理的な実体であるのに対し、記憶域は物理的な実体です。表または索引のパーティションはそれぞれ、常に1つの記憶域に存在しますが、1つの記憶域には、異なる表および索引のパーティションを複数存在させることが可能です。パーティションの削除とは、記憶域内部の論理的な実体の削除を意味します。データを明示的に移動する場合はMOVE PARTITION句を使用し、暗黙的に移動する場合はDROP PARTITION句およびADD PARTITION句を使用します。
物理的な記憶域ファイルを削除する場合は、DROP STORAGE AREA句を指定したALTER DATABASE文を使用します。- partition-nameの指定は、変更される索引内で一意である必要があります。この名前は、パーティションに関係するその他の文でも使用できるように、システム表RDB$STORAGE_MAP_AREASのRDB$PARTITION_NAME列に格納されます。
- COMMENT ON文を使用して、既存のパーティションにコメントを追加します。(構文については「COMMENT ON文」を参照してください。)この文は、すべてのタイプの索引に適用できます。
partition-nameの指定は、参照される索引内に存在している必要があります。既存のコメント(ある場合)は削除され、指定した新しいテキストで置換されます。新しいテキストは、COMMIT文を実行すると確定されます。- INDEX_STATSフラグが有効になっている場合、ALTER INDEXコマンドを実行すると、論理名RDMS$DEBUG_FLAGS_OUTPUTで指定されたファイル(このフラグが定義されていない場合は標準出力デバイス)に、ALTER INDEX文の進捗状況を示すメッセージが記録されます。INDEX_STATSフラグは、次のいずれかによって有効になります。
- SET FLAGS 'INDEX_STATS'コマンドを使用します。
- 論理名RDMS$DEBUG_FLAGSをAiと定義します。
- 論理名RDMS$SET_FLAGSをINDEX_STATSと定義します。
注意
「例」の項の「例3」の読取り/書込みI/O統計は、データベースに対してSTATISTICS COLLECTION IS DISABLEDが指定されている場合、または論理名RDM$BIND_STATS_ENABLEDが0に設定されている場合は表示されません。
- ADD句、DROP句およびMOVE PARTITION句については、次の点に注意します。
- 現在、これらの句はハッシュ索引に対してのみサポートされています。ソート索引に対しては、将来のリリースでサポートされる予定です。
- パーティションを追加、削除、移動する場合は、その表に対してアクティブな問合せがコンパイルされていない必要があります。これには、現在のセッション内、および表を参照したことのあるその他のアプリケーション内の宣言カーソルも含まれます。その他のALTER INDEX句と同様に、現在のトランザクションの実行中は、表に対する排他アクセスが必要です。
- SHOW INDEXコマンドまたはSHOW TABLE (INDEX)コマンドを実行すると、索引定義の元のソースにADD、DROPまたはMOVE PARTITIONのソースが追加されて表示されます。「例」の項の「例3」を参照してください。Item=Index修飾子を指定したRMU Extractコマンドを使用すると、現在の索引定義に加えて、CREATE INDEX構文にマージされた追加パーティション、CREATE INDEX構文から削除された削除済パーティション、またはCREATE INDEX構文内の(移動したパーティションに対する)更新済パーティションを同時に表示できます。
- ADD PARTITION句については、次の点に注意します。
- area-spec句を使用すると、PARTITION句でパーティション名を指定できます。area-spec句を使用する場合は、指定するパーティション名がADD PARTITION句に指定されているパーティション名と同じである必要があります。
- Oracle Rdbでは、パーティション名は、パーティションに関係するその他の文でも使用できるように、システム表RDB$STORAGE_MAP_AREASに格納されます。この名前は検証され、索引ごとに一意である必要があります。
- パーティションを索引に追加するには、その索引がSTORE句によってすでに作成されている必要があります。これにより、パーティションをさらに追加できます。
- USING句では、元の索引定義と同じ順序で、同じ列名がリストされます。
- WITH LIMIT OF句が指定されていない場合、パーティションは索引の最後尾にOTHERWISEパーティションとして追加されます。この索引にOTHERWISEパーティションがすでにある場合は、エラーがレポートされます。
- WITH LIMIT OF句では、パーティションに対する一意の値セットを新規に指定する必要があります。USING句にリストされている各列には、リテラル値が必要です。
- 新しい最後尾のパーティションまたはOTHERWISEパーティションが追加された場合、その索引に対するI/Oは必要ありません。つまり、その索引内のデータを再配置する必要はありません。
- ADD PARTITION句では、MIXED領域の各ページに格納されているRDB$SYSTEM_RECORD行が読み込まれ、現在の索引のハッシュ・バケットが特定されます。新規パーティションに分類されるハッシュ・キーは、(関連する複製キーとともに)その新規パーティションに移動します。新たに追加された領域に属していないハッシュ・キーは移動しません。
注意
記憶域マップのPLACEMENT VIA INDEX句でこのハッシュ索引が使用されている場合は、配置された表の行がADD PARTITION句で移動されることはありません。ただし、ハッシュ索引の新規パーティションは、そのハッシュ・バケットに隣接して格納されない場合でも、これらの行を正しく参照します。
- RESTRICTED ACCESS句を使用してデータベースにアタッチすると、すべてのパーティション(およびシステム・レコード領域)がEXCLUSIVEアクセス用に予約されます。
これらの領域は、EXCLUSIVEモードの現在のトランザクション(DECLARE TRANSACTION文またはSET TRANSACTION文)で、その表がRESERVING句で使用される場合でも、EXCLUSIVEアクセス用に予約されます。
それ以外の場合、デフォルトのアクションでは、索引の新しい後続パーティションがPROTECTED WRITE用に予約されます。新規パーティションのRDB$SYSTEM_RECORDはSHARED WRITE用に、また既存のパーティションのRDB$SYSTEM_RECORDはSHARED READモード用に予約されます。
パーティションに対してEXCLUSIVEアクセスを使用すると、その記憶域に他の索引が格納されている場合などに、RDB$SYSTEM_RECORDの他のユーザーによる記憶域への同時アクセスが制限されます。ただし、EXCLUSIVEアクセスには、関連するスナップショット・ファイルへのI/Oを削減し、この操作に対する仮想メモリーの使用量を低下させるという利点もあります。このため、ALTER INDEX操作の所要時間を短縮できる場合には、EXCLUSIVEモードを使用することをお薦めします。操作の完了後は、できるかぎり速やかにCOMMIT操作を実行して表のロックを解除します。
NOLOGGING句を使用している(または論理名RDMS$CREATE_LAREA_NOLOGGINGが定義されている)場合、新規パーティションに書き込まれているハッシュ・バケットおよび複製ノードはジャーナリングされません。ただし、そのパーティション内の既存のRDB$SYSTEM_RECORDに対する更新、およびそれに続くパーティションに対して実行される削除はジャーナリングされます。
- DROP PARTITION句については、次の点に注意します。
- partition-nameの指定は、変更される索引内に存在している必要があります。この名前は、システム表RDB$STORAGE_MAP_AREASおよびRDB$PARTITION_NAME列に対してチェックされます。
- パーティションを参照できるようにするには、STORE句で索引を作成しておく必要があります。
- この表に対しては、有効な問合せはありません。これには、現在のセッション内、または表を参照したことのあるその他のアプリケーション内の宣言カーソルも含まれます。その他のALTER INDEX文と同様に、現在のトランザクションの実行中は、表に対する排他アクセスが必要です。
- DROP PARTITION句では、MIXED領域の各ページに格納されているRDB$SYSTEM_RECORD行が読み込まれ、現在の索引のハッシュ・バケットが特定されます。ハッシュ・キーはすべて、(関連する複製キーとともに)次のパーティションに移動します。
注意
記憶域マップのPLACEMENT VIA INDEX句でこのハッシュ索引が使用されている場合は、配置された表の行がDROP PARTITION句で移動されることはありません。ただし、ハッシュ索引は、そのハッシュ・バケットに隣接して格納されない場合でも、これらの行を正しく参照します。
- RESTRICTED ACCESS句を使用してデータベースにアタッチすると、すべてのパーティション(およびシステム・レコード領域)がEXCLUSIVEアクセス用に予約されます。
これらの領域は、EXCLUSIVEモードの現在のトランザクション(DECLARE TRANSACTION文またはSET TRANSACTION文)で、その表がRESERVING句で使用される場合でも、EXCLUSIVEアクセス用に予約されます。
それ以外の場合、デフォルトのアクションでは、既存のパーティションおよびそのRDB$SYSTEM_RECORDがEXCLUSIVEアクセス用に予約されます。また、それに続くパーティションがPROTECTED WRITE用に、そのパーティションのRDB$SYSTEM_RECORDがSHARED WRITE用に予約されます。
パーティションに対してEXCLUSIVEアクセスを使用すると、その記憶域に他の索引が格納されている場合などに、RDB$SYSTEM_RECORDの他のユーザーによる記憶域への同時アクセスが制限されます。ただし、EXCLUSIVEアクセスでは、関連するスナップショット・ファイルへのI/Oを削減し、この操作に対する仮想メモリーの使用量が減少します。このため、ALTER INDEX操作の所要時間を短縮できる場合には、EXCLUSIVEモードを使用することをお薦めします。操作の完了後は、できるかぎり速やかにCOMMIT操作を実行して表のロックを解除します。
- MOVE PARTITION句については、次の点に注意します。
- partition-nameの指定は、変更される索引内に存在している必要があります。この名前は、システム表RDB$STORAGE_MAP_AREASおよびRDB$PARTITION_NAME列に対してチェックされます。
- MOVE PARTITION句を使用すると、area-spec句にPARTITION句を指定してパーティションの名前を変更することもできます。この句で指定したpartition-nameは、MOVE PARTITIONに指定したパーティション名と同じである必要があります。同じでなければ、この索引で使用されていない一意の名前を指定します。
- パーティションを参照できるようにするには、STORE句で索引を作成しておく必要があります。
- MOVE PARTITION句では、MIXED領域の各ページに格納されているRDB$SYSTEM_RECORD行が読み込まれ、現在の索引のハッシュ・バケットが特定されます。ハッシュ・キーはすべて、(関連する複製キーとともに)この索引に関連付けられている新規の記憶域に移動します。
注意
記憶域マップのPLACEMENT VIA INDEX句でこのハッシュ索引が使用されている場合は、配置された表の行がMOVE PARTITION句で移動されることはありません。ただし、ハッシュ索引は、そのハッシュ・バケットに隣接して格納されない場合でも、これらの行を正しく参照します。
- RESTRICTED ACCESS句を使用してデータベースにアタッチすると、すべてのパーティション(およびシステム・レコード領域)がEXCLUSIVEアクセス用に予約されます。
これらの領域は、EXCLUSIVEモードの現在のトランザクション(DECLARE TRANSACTION文またはSET TRANSACTION文)で、その表がRESERVING句で使用される場合でも、EXCLUSIVEアクセス用に予約されます。
それ以外の場合、デフォルトのアクションでは、既存のパーティションおよびそのRDB$SYSTEM_RECORDがEXCLUSIVEアクセス用に予約されます。また、それに続くパーティションがPROTECTED WRITE用に、そのパーティションのRDB$SYSTEM_RECORDがSHARED WRITE用に予約されます。
パーティションに対してEXCLUSIVEアクセスを使用すると、その記憶域に他の索引が格納されている場合などに、RDB$SYSTEM_RECORDの他のユーザーによる記憶域への同時アクセスが制限されます。ただし、EXCLUSIVEアクセスでは、関連するスナップショット・ファイルへのI/Oを削減し、この操作に対する仮想メモリーの使用量が減少します。このため、ALTER INDEX操作の所要時間を短縮できる場合には、EXCLUSIVEモードを使用することをお薦めします。操作の完了後は、できるかぎり速やかにCOMMIT操作を実行して表のロックを解除します。- NOLOGGING句を使用している(または論理名RDMS$CREATE_LAREA_NOLOGGINGが定義されている)場合、新規パーティションに書き込まれているハッシュ・バケットおよび複製ノードはジャーナリングされません。ただし、そのパーティション内の既存のRDB$SYSTEM_RECORDに対する更新、およびそれに続くパーティションに対して実行される削除はジャーナリングされます。
- RENAME PARTITION句については、次の使用方法に注意します。
- partition-nameの指定は、変更される索引内に存在している必要があります。この名前は、システム表RDB$STORAGE_MAP_AREASおよびRDB$PARTITION_NAME列に対してチェックされます。
- この新規の名前は現在の名前と置き換えられ、COMMITが実行されると確定します。
- この句は、ソート索引とハッシュ索引のどちらにも適用できます。
- ALTER INDEX...TRUNCATE PARTITION <partition-name>は、削除する必要がある大規模の索引に最適です。これは、索引の一部を一度に少しずつ削除できます。最終的にDROP INDEXを使用すると、切り捨てられたパーティションは再処理されません。
- TRUNCATE TABLE文では、(空の表に対しては空の索引で十分なため)作成ペンディング状態の索引のパーティションを切り捨て、その状態を有効な状態に変更することもできます。メンテナンスが無効になっている索引は、TRUNCATE TABLE文では処理されません。
- 次のいずれかのALTER INDEX句を使用する場合は、INDEX_STATSオプションを指定してSET FLAGSを使用することをお薦めします。
- BUILD PARTITIONおよびBUILD ALL PARTITIONS
- REBUILD PARTITIONおよびREBUILD ALL PARTITIONS
- TRUNCATE PARTITIONおよびTRUNCATE ALL PARTITIONS
これらの句のアクションについては、トレース出力に表示されます。- REBUILD PARTITION、TRUNCATE PARTITIONおよびBUILD PARTITIONでは、索引はすべて作成ペンディング状態のまま残され、すべてのパーティションの作成後にALTER INDEX ... MAINTENANCE IS ENABLEDステップを実行する必要があります。対話型SQLでは、索引が不完全であることをデータベース管理者に通知する警告が生成されます。