ALTER TABLESPACE ステートメント
ALTER TABLESPACE ステートメントは、既存の表スペースを変更する場合に使用します。
- DMS 表スペース (つまり MANAGED BY DATABASE オプションによって作成される表スペース) にコンテナーを追加する、 または DMS 表スペースからコンテナーをドロップする。
- DMS 表スペースのコンテナーのサイズを変更する。
- エクステントの移動を行って、DMS 表スペースの最高水準点を下げる。
- コンテナーのないデータベース・パーティション上の SMS 表スペースにコンテナーを追加する。
- 表スペースの PREFETCHSIZE 設定値を変更する。
- 表スペースの表に対して使用する BUFFERPOOL を変更する。
- 表スペースの OVERHEAD 設定値を変更する。
- 表スペースの TRANSFERRATE 設定値を変更する。
- 表スペースに対するファイル・システムのキャッシング・ポリシーを変更する。
- DMS 表スペースまたは自動ストレージ表スペースの自動サイズ変更を使用可能または使用不可にする。
- REGULAR または LARGE 自動ストレージ表スペースを再平衡化する。
- 表スペースの DATA TAG 設定値を変更する。
- DMS 表スペースを自動ストレージ表スペースに変更する。
- 表スペースに関連付けられた STOGROUP 設定値を変更する。
呼び出し
このステートメントは、アプリケーション・プログラムに組み込むか、あるいは対話式に発行することができます。 これは、DYNAMICRULES の実行動作がパッケージに効力を持つ場合にのみ、動的に準備できる実行可能ステートメントです (SQLSTATE 42509)。
許可
このステートメントの許可 ID が持つ特権には、SYSCTRL または SYSADM 権限が含まれている必要があります。
構文
説明
- tablespace-name
- 表スペースの名前を指定します。 これは、1 部構成の名前です。 これは、長形式 SQL ID です (通常 ID または区切り ID のいずれか)。
- ADD
- 表スペースに 1 つまたは複数の新しいコンテナーを追加するように指定します。
- TO STRIPE SET ストライプ
- 1 つまたは複数の新しいコンテナーを表スペースに追加し、指定したストライプ・セットに配置するように指定します。
- BEGIN NEW STRIPE SET
- 表スペースに新しいストライプ・セットを作成し、 その新しいストライプ・セットに 1 つまたは複数のコンテナーを追加するように指定します。 これ以降、ADD オプションを使用して追加するコンテナーは、TO STRIPE SET を指定しない限り、この新しいストライプ・セットに追加されます。
- DROP
- 1 つまたは複数のコンテナーを表スペースからドロップするように指定します。
- REDUCE
- 非自動ストレージ表スペースでは、既存のコンテナーのサイズを減らすように指示します。 指定するサイズは、既存のコンテナーから減らすサイズです。 all-containers-clause が指定されると、
表スペースにあるすべてのコンテナーがこのサイズだけ縮小されます。 サイズを減らすことによって表スペースのサイズが現行の最高水準点より小さくなる場合、コンテナーを縮小する前に最高水準点を下げることを試みます。 非自動ストレージ表スペースでは、REDUCE 節の後に db-container-clause または all-containers-clause を指定する必要があります。
自動ストレージ表スペースでは、可能な場合は現行の最高水準点を下げること、そして表スペースのサイズを新しい最高水準点まで減らすことを指定します。 自動ストレージ表スペースの場合、REDUCE 節の後に db-container-clause、 all-containers-clause、または on-db-partitions-clauseを続けてはなりません。
注: MAX、数値、PERCENT、または STOP 節を指定した REDUCE オプション、および STOP 節を指定した LOWER HIGH WATER MARK オプションは、再利用可能ストレージ属性を持つデータベース表スペースおよび自動ストレージ管理表スペースでのみ使用可能です。 また、こうしたオプションは、これらのオプションどうしの場合も含め、他のオプションを指定しないで指定および実行する必要があります。MAX、STOP、integer [K | M | G]、または integer PERCENT 節は、ステートメントが処理されるときに有効になり、ステートメントが実行される作業単位がロールバックされる場合にロールバックされません。
- db-container-clause
- DMS 表スペースに 1 つ以上のコンテナーを追加します。 表スペースは、 既にアプリケーション・サーバーに存在する DMS 表スペースを指定するものでなければなりません。 all-containers-clause
- DMS 表スペースにあるコンテナーすべてを拡張、縮小またはサイズ変更します。 表スペースは、 既にアプリケーション・サーバーに存在する DMS 表スペースを指定するものでなければなりません。
- MAX
- 再利用可能なストレージを使用する自動ストレージ表スペースの場合、最高水準点を下げるために、エクステントの最大数を表スペースの先頭に移動するように指定します。 また、表スペースのサイズは新しい最高水準点まで減らされます。 この縮小は、非自動ストレージ表スペースには適用されません。
- STOP
- 再利用可能なストレージを使用する自動ストレージ表スペースの場合、エクステントの移動操作が進行中であれば、その操作が中断されます。 このオプションは、非自動ストレージ表スペースでは使用できません。
- integer [K | M | G] または integer PERCENT
- 再利用可能なストレージを使用する自動ストレージ表スペースの場合、エクステントの移動によって減少する表スペース量の数値を指定します。 この値は、以下のいくつかの方法で表現できます。
- K、M、G、または PERCENT を使用しない整数の場合、減少する表スペース量をページ数として表した数値であることを示しています。
- K、M、または G を使用して指定される整数は、縮小サイズの単位がキロバイト、メガバイト、またはギガバイトであることを示します。 最初にこの値はバイト数から、表スペースのページ・サイズに基づいてページ数に変換されます。
- PERCENT を使用して指定された整数は、移動するエクステントの数を、表スペースの現行サイズのパーセンテージで表します。
on-db-partitions-clause - 1 つ以上のデータベース・パーティションを、それに対応するコンテナー操作に対して指定します。
- EXTEND
- 既存のコンテナーのサイズを増やすように指示します。 指定するサイズは、既存のコンテナーに追加されるサイズです。 all-containers-clause が指定されると、 表スペースにあるすべてのコンテナーがこのサイズで拡張されます。
- RESIZE
- 既存のコンテナーのサイズを変更するよう指定します。 指定されるサイズが、コンテナーの新しいサイズになります。 all-containers-clause が指定されると、表スペースにあるすべてのコンテナーがこのサイズに変更されます。 この操作が複数のコンテナーに影響を与える場合には、 そうしたコンテナーすべてのサイズは増やすか減らすかのどちらかにする必要があります。 一部を増やし、その他を減らすことはできません (SQLSTATE 429BC)。 db-container-clause
- DMS 表スペースに 1 つ以上のコンテナーを追加します。 表スペースは、 既にアプリケーション・サーバーに存在する DMS 表スペースを指定するものでなければなりません。 drop-container-clause
- 1 つまたは複数のコンテナーを DMS 表スペースからドロップします。 表スペースは、 既にアプリケーション・サーバーに存在する DMS 表スペースを指定するものでなければなりません。 system-container-clause
- 指定のデータベース・パーティションにある SMS 表スペースに、1 つ以上のコンテナーを追加します。 表スペースは、 既にアプリケーション・サーバーに存在する SMS 表スペースを指定するものでなければなりません。 表スペースに対して指定するデータベース・パーティションにコンテナーがあってはなりません (SQLSTATE 42921)。 on-db-partitions-clause
- 1 つ以上のデータベース・パーティションを、それに対応するコンテナー操作に対して指定します。 all-containers-clause
- DMS 表スペースにあるコンテナーすべてを拡張、縮小またはサイズ変更します。 表スペースは、 既にアプリケーション・サーバーに存在する DMS 表スペースを指定するものでなければなりません。
- REBALANCE
- REGULAR および LARGE 自動ストレージ表スペースの場合、新しく追加されたストレージ・パス上におけるコンテナーの作成と、
「ドロップ・ペンディング」
状態にあるストレージ・パスからのコンテナーのドロップのいずれか一方、あるいはその両方が開始されます。 再平衡化の際、データは新しいパス上のコンテナーに移動され、ドロップされるパスにあるコンテナーからはデータが送出されます。 再平衡化はバックグラウンドで非同期的に行われ、データの可用性には影響は与えません。注: SUSPEND または RESUME 節は、ステートメントが処理されるときに有効になり、ステートメントが実行される作業単位がロールバックされてもロールバックされません。- SUSPEND
- 指定した表スペースでアクティブなリバランス操作を中断します。 アクティブなリバランス操作が存在しない場合、アクションは実行されず、成功が返されます。 中断状態は持続されます。リバランスが中断しているときにデータベースが非アクティブになった場合、次回データベースがアクティブになるときには、リバランス操作が中断状態から再開します。 リバランス操作が既に中断しているときに中断しても変化はなく、成功が返されます。
- RESUME
- 以前に中断したリバランス操作を再開します。 アクティブなリバランス操作が存在しない場合、アクションは実行されず、成功が返されます。 オンライン・バックアップ操作のためにリバランスが PAUSED になった場合には、表スペース・リバランスは中断状態ではなくなり、オンライン・バックアップが完了するまで一時停止の状態になります。
- PREFETCHSIZE
- 照会が入出力の実行を待たずに済むように、照会に必要なデータを、照会で参照される前に読み込むことを指定します。
- AUTOMATIC
- 表スペースのプリフェッチ・サイズが自動的に更新されるように指定します。
プリフェッチ・サイズは、データベース・マネージャーにより管理されます。
表スペース内のコンテナー数が変化するたびに (1 つ以上のコンテナーを追加またはドロップする ALTER TABLESPACE ステートメントの正常実行に続いて)、データベースはプリフェッチ・サイズを自動的に更新します。 プリフェッチ・サイズも、データベースの始動時に自動的に更新されます。
PREFETCHSIZE 節に数値を指定することにより、 プリフェッチ・サイズの自動更新をオフにすることができます。
ページ数 (number-of-pages) - データのプリフェッチの実行中に、 表スペースから読み取られる PAGESIZE ページの数を指定します。 最大値は 32767 です。
- 整数 K | M
- プリフェッチ・サイズ値を、後に K (キロバイトの場合)、または M (メガバイトの場合) を付けた整数値として指定します。 このように指定した場合、バイト数をページ・サイズで割った値を下限に丸めたものを使用してプリフェッチ・サイズのページ数の値が決定されます。
- BUFFERPOOL バッファー・プール名
- この表スペースの表に対して使用するバッファー・プールの名前を指定します。 バッファー・プールは、現在データベースに存在している必要があります (SQLSTATE 42704)。 バッファー・プールに対して、この表スペースのデータベース・パーティション・グループを定義する必要があります (SQLSTATE 42735)。
- OVERHEAD number-of-milliseconds または OVERHEAD INHERIT
- 入出力コントローラーのオーバーヘッド、ディスク・シーク、および待ち時間を指定します。 この値を使用して、照会最適化時の入出力のコストを判別します。 チューニングについて詳しくは、 照会の最適化に対する表スペースの影響を参照してください。
- number-of-milliseconds
- 入出力制御装置のオーバーヘッドとディスク・シーク待ち時間を ミリ秒単位で指定する数値リテラルです (整数、10 進数、または浮動小数点数)。 この数値がすべてのコンテナーで同一でない場合、 それは表スペースに属するすべてのコンテナーの平均でなければなりません。
- INHERIT
- INHERIT を指定した場合、表スペースは自動ストレージを使用して定義する必要があり、ストレージ・グループから OVERHEAD が動的に継承されます。 INHERIT は、自動ストレージを使用して表スペースを定義しなかった場合には指定できません (SQLSTATE 42858)。 ストレージ・グループにおいて OVERHEAD が undefined に設定されていて、OVERHEAD を INHERIT に設定した場合、データベース作成のデフォルトが使用されます。
バージョン 10.1 Db2® 以降で作成されたデータベースの場合、デフォルトの入出力コントローラーのオーバーヘッド、ディスク・シーク、および待ち時間は 6.725 ミリ秒です。
以前のバージョンの Db2 から Db2 バージョン 10.1 以降にアップグレードされたデータベースの場合、デフォルトの入出力コントローラーのオーバーヘッド、ディスク・シーク、および待ち時間は次のようになります。- Db2 バージョン 9.7 以上で作成されたデータベースの場合は 7.5 ミリ秒。
- TRANSFERRATE number-of-milliseconds または TRANSFERRATE INHERIT
- 1 ページをメモリーに読み込むための時間を指定します。 この値を使用して、照会最適化時の入出力のコストを判別します。 チューニングについて詳しくは、 照会の最適化に対する表スペースの影響を参照してください。
- number-of-milliseconds
- 1 ページ (4 K または 8 K) をメモリーに読み込むための時間をミリ秒単位で指定する数値リテラルです (整数、 10 進数、または浮動小数点数)。 この数値がすべてのコンテナーで同一でない場合、 それは表スペースに属するすべてのコンテナーの平均でなければなりません。
- INHERIT
- INHERIT を指定した場合、表スペースは自動ストレージを使用して定義する必要があり、ストレージ・グループから TRANSFERRATE が動的に継承されます。 INHERIT は、自動ストレージを使用して表スペースを定義しなかった場合には指定できません (SQLSTATE 42858)。 ストレージ・グループの DEVICE READ RATE が undefined に設定されていて、ユーザーが TRANSFERRATE を INHERIT に設定した場合、データベース作成のデフォルトが使用されます。
自動ストレージ表スペースが、そこで使用されているストレージ・グループから TRANSFERRATE 設定を継承する場合、ストレージ・グループの DEVICE READ RATE (メガバイト/秒単位) が変換され、その表スペースの PAGESIZE 設定に合わせた、1 ページを読み取るミリ秒数になります。 変換公式は次のようになります。
TRANSFERRATE = ( 1 / DEVICE READ RATE ) * 1000 / 1024000 * PAGESIZE
Db2 バージョン 10.1 以降で作成されたデータベースの場合、4 KB PAGESIZE 表スペースで 1 ページをメモリーに読み込むデフォルトの時間は 0.04 ミリ秒です。
以前のバージョンの Db2 から Db2 バージョン 10.1 以降にアップグレードされたデータベースの場合、1 ページをメモリーに読み込むデフォルトの時間は以下のとおりです。- 0.06 ミリ秒 ( Db2 バージョン 9.7 以上で作成されたデータベースの場合)
- FILE SYSTEM CACHING または NO FILE SYSTEM CACHING
- 入出力操作をファイル・システム・レベルでバッファーに入れるかキャッシュしないかを指定します。 入出力モードに対する変更は動的ではないため、次回のデータベース・アクティブ化のときに有効になります。 デフォルトの入出力モードは、オペレーティング・システム、ファイル・システムのタイプ、およびデータ・オブジェクト・タイプ (SMS 表スペースの場合) に基づいて決まります。 詳しくは、
『ファイル・システム・キャッシング構成』
を参照してください。 デフォルト以外のファイル・システム・キャッシング・オプションを選択した後に、デフォルト (未指定) の動作に戻すことはできません。 代わりに、ファイル・システム・キャッシング・モードを明示的に選択する必要があります。- FILE SYSTEM CACHING
- ターゲット表スペース内のすべての入出力操作が、ファイル・システム・レベルでキャッシュに入れられます。
- NO FILE SYSTEM CACHING
- すべての入出力操作がファイル・システム・レベルのキャッシュを迂回することを指定します。 SMS 表スペース内の LOB および長形式フィールド・データを除きます。注:
Db2 は、物理セクター・サイズ 512 バイトまたは 4096 バイトのディスク装置をサポートします。
デフォルトでは 4096 バイトのセクター・サイズはサポートされませんが、DB2_4K_DEVICE_SUPPORT レジストリー変数を使用して有効にできます。
- DROPPED TABLE RECOVERY
- tablespace-name からドロップされた表を、 ROLLFORWARD DATABASE コマンドの RECOVER DROPPED TABLE ON オプションを使用してリカバリーできるかどうかを指定します。 パーティション表に関しては、ドロップされた表のリカバリーは、たとえ 1 つ以上の表スペースで非パーティション表についてオフにされたとしても、常にオンになります。
- ON
- ドロップされた表が回復可能であることを指定します。
- オフ
- ドロップされた表が回復不能であることを指定します。
- SWITCH ONLINE
- コンテナーがアクセス可能になると、OFFLINE 状態の表スペースがオンラインになることを指定します。 コンテナーがアクセス可能でなければ、エラーが戻されます (SQLSTATE 57048)。
- AUTORESIZE
- データベース管理スペース (DMS) 表スペースまたは自動ストレージ表スペースの自動サイズ変更機能を有効にするかどうかを指定します。 自動サイズ変更可能表スペースは、いっぱいになると、サイズを自動的に大きくします。
- いいえ
- DMS 表スペースまたは自動ストレージ表スペースの自動サイズ変更機能が無効であることを指定します。 自動サイズ変更機能を無効にする場合、過去に指定した INCREASESIZE または MAXSIZE の値は保持されません。
- はい
- DMS 表スペースまたは自動ストレージ表スペースの自動サイズ変更機能が有効であることを指定します。
- INCREASESIZE integer PERCENT または INCREASESIZE integer K | M | G
- 自動サイズ変更が有効な表スペースが、表スペースがいっぱいでスペース要求が出された場合に自動でサイズを増分させる量 (データベース・パーティションごとの量) を指定します。 整数値の後に以下のものを指定しなければなりません。
- PERCENT。スペースの要求がなされた時点の表スペース・サイズのパーセンテージとして量を指定します。 PERCENT を指定する場合、整数値は 0 から 100 までの範囲でなければなりません (SQLSTATE 42615)。
- K (K バイト)、M (M バイト)、または G (G バイト)。バイト単位で量を指定します。
- MAXSIZE integer K | M | G または MAXSIZE NONE
- 自動サイズ変更が有効な表スペースで、自動的に増加可能な最大サイズを指定します。
- 整数
- DMS 表スペースまたは自動ストレージ表スペースが自動的に増加できるサイズのハード・リミットを、データベース・パーティションごとに指定します。 整数値の後に K (キロバイト)、M (メガバイト)、または G (ギガバイト) を指定する必要があります。 使用される実際の値は、指定した値よりも多少増減する場合があります。これは、データベース・マネージャーが表スペース内のコンテナー間で増加量を統一しようとするためです。
- NONE
- 表スペースをファイル・システムの容量まで、または表スペースの最大サイズ (
SQL と XML の制限
で解説) まで増大できるようにすることを指定します。
- CONVERT TO LARGE
- 既存の REGULAR DMS 表スペースを LARGE DMS 表スペースになるよう変更します。 表スペースとその内容は、変換の際、ロックされます。 このオプションは、REGULAR DMS 表スペースにのみ使用できます。 SMS 表スペース、TEMPORARY 表スペース、またはシステム・カタログ表スペースが指定されると、エラーが戻されます (SQLSTATE 560CF)。 他の表スペースにデータ・パーティションを持つパーティション表のデータ・パーティションを含む表スペースは変換できません (SQLSTATE 560CF)。 変換は、コミット後に元に戻すことはできません。 表スペース内の表が DATA CAPTURE CHANGES によって定義されている場合は、ターゲット表と表スペースの記憶容量制限を考慮するようにします。
- LOWER HIGH WATER MARK
- 再利用可能なストレージを使用する自動ストレージ表スペースと非自動ストレージ表スペースのどちらの場合であっても、エクステントの最大数を表スペース内で下げるために、エクステントの移動操作をトリガーします。 最高水準点は低くなりますが、表スペースのサイズは減りません。 これは自動ストレージ表スペースの場合には ALTER TABLESPACE REDUCE の前に、非自動ストレージ表スペースの場合には db-container-clause または all-containers-clause を指定した ALTER TABLESPACE REDUCE の前に指定する必要があります。注: STOP 節を指定した LOWER HIGH WATER MARK オプション、および MAX、数値、PERCENT、または STOP 節を指定した REDUCE オプションは、再利用可能ストレージ属性を指定したデータベース管理表スペースおよび自動ストレージ管理表スペースにのみ使用できます。 また、こうしたオプションは、これらのオプションどうしの場合も含め、他のオプションを指定しないで指定および実行する必要があります。注: この節は、ステートメントが処理されるときに有効になり、ステートメントが実行される作業単位がロールバックされてもロールバックされません。
- STOP
- 再利用可能なストレージを使用する自動ストレージ表スペースと非自動ストレージ表スペースのどちらの場合も、エクステントの移動操作が進行中であれば、その操作が中断されます。
- USING STOGROUP
- 表スペースを別のストレージ・グループに関連付けます。 表スペースに関連付けられたデータは、現在のストレージ・グループから、指定したストレージ・グループに移されます。 この節は、MANAGED BY AUTOMATIC STORAGE 節とともに指定されない限り、自動ストレージ表スペースにのみ適用されます (SQLSTATE 42858)。
自動ストレージ表スペースでは、暗黙的な REBALANCE がコミット時に開始します。 自動ストレージ管理に変換されるデータベース管理の表スペースでは、明示的な REBALANCE ステートメントが必要になります。
パーティション・データベース環境では、表スペースのストレージ・グループの関連付けを変更するには、すべてのデータベース・パーティションで自動ストレージを使用して表スペースを定義する必要があります。 自動ストレージを使用して定義されていない表スペースがいずれかのデータベース・パーティションにある場合は、MANAGED BY AUTOMATIC STORAGE 節とともに指定しないと、このコマンドは失敗します (SQLSTATE 42858)。 ただし、表スペースに関連付けられるストレージ・グループがすべてのデータベース・パーティションで同じでなくても、このコマンドによる表スペースの移動は、すべてのデータベース・パーティションで正常に実行できます。
- ストレージ・グループ名
- 表スペース・データが格納されるストレージ・グループを指定します。 storagegroup-name には、現行のサーバー上の既存のストレージ・グループを指定する必要があります (SQLSTATE 42704)。 これは、1 部構成の名前です。
- DATA TAG integer-constant、DATA TAG INHERIT、または DATA TAG NONE
- 表スペース内のデータにタグを指定します。 この値は、作業クラス定義に含まれる WLM 構成の一部として使用することもできますし、しきい値定義内で参照することもできます。 詳しくは、CREATE WORK CLASS SET、ALTER WORK CLASS SET、CREATE THRESHOLD、ALTER THRESHOLD の各ステートメントを参照してください。 この節は、USER 表スペース、SYSTEM TEMPORARY 表スペース、またはカタログ表スペースでは指定できません (SQLSTATE 42858)。
- integer-constant
- integer-constant の有効値は、1 から 9 までの整数定数です。 integer-constant を指定し、関連付けたストレージ・グループが存在する場合、表スペースに指定したデータ・タグが、関連付けたストレージ・グループに指定されているデータ・タグ値をオーバーライドします。
- INHERIT
- INHERIT を指定した場合、表スペースは自動ストレージを使用して定義する必要があり、ストレージ・グループから DATA TAG が動的に継承されます。 INHERIT は、自動ストレージを使用して表スペースを定義しなかった場合には指定できません (SQLSTATE 42858)。
- NONE
- NONE が指定されている場合、データ・タグはありません。
- MANAGED BY AUTOMATIC STORAGE
- データベース管理 (DMS) 表スペースの自動ストレージを使用可能にします。 自動ストレージを使用可能にすると、表スペース上でそれ以上のコンテナー操作は実行できません。 変換されている表スペースは、RAW (DEVICE) コンテナーを使用できません。
DMS 表スペースから自動ストレージ表スペースへの変換時に USING STOGROUP 節が含まれていない場合は、デフォルトのストレージ・グループが指定されます。
ルール
- BEGIN NEW STRIPE SET 節は、ADD、DROP、EXTEND、REDUCE、および RESIZE 節が別のデータベース・パーティションへ指示されない限り、同じステートメントでそれらを指定して使用することはできません (SQLSTATE 429BC)。
- TO STRIPE SET 節を使用して指定されたストライプ・セットは、変更される表スペースの有効な範囲内になければなりません (SQLSTATE 42615)。
- 表スペースにスペースを追加、または表スペースからスペースを削除する場合、以下の規則に従います。
- 各コンテナーのサイズが大きくなる場合は、EXTEND と RESIZE を同じステートメントで使用できます (SQLSTATE 429BC)。
- 各コンテナーのサイズが小さくなる場合は、REDUCE と RESIZE を同じステートメントで使用できます (SQLSTATE 429BC)。
- EXTEND および REDUCE は、別のデータベース・パーティションに向けられない限りは、 同じステートメントでは使用できません (SQLSTATE 429BC)。
- ADD は、REDUCE または DROP が別のデータベース・パーティションに向けられない限りは、 それらと共に同じステートメントでは使用できません (SQLSTATE 429BC)。
- DROP は、EXTEND または ADD が別のデータベース・パーティションに向けられない限りは、 それらと共に同じステートメントでは使用できません (SQLSTATE 429BC)。
- AUTORESIZE、INCREASESIZE、または MAXSIZE 節は、システム管理スペース (SMS) 表スペース、自動ストレージを使用して作成された TEMPORARY 表スペース、またはロー・デバイス・コンテナーを使用するよう定義された DMS 表スペースには指定できません (SQLSTATE 42601)。
- INCREASESIZE または MAXSIZE 節は、表スペースが自動サイズ変更不可である場合には指定できません (SQLSTATE 42601)。
- 表スペースの新規最大サイズを指定する際、その値は各データベース・パーティション上の現行サイズよりも大きくなければなりません (SQLSTATE 560B0)。
- コンテナー操作 (ADD、EXTEND、RESIZE、DROP、または BEGIN NEW STRIPE SET) は、自動ストレージ表スペースに対しては実行できません。なぜならそのような表スペースのスペース管理は、データベース・マネージャーが制御しているからです (SQLSTATE 42858)。
- ロー・デバイス・コンテナーを、自動サイズ変更可能 DMS 表スペースに追加することはできません (SQLSTATE 42601)。
- CONVERT TO LARGE 節は、他の節と同じステートメントに指定することができません (SQLSTATE 429BC)。
- REBALANCE 節を、他の節と一緒に指定することはできません (SQLSTATE 429BC)。
- REBALANCE 節が有効なのは、REGULAR および LARGE 自動ストレージ表スペースのみです (SQLSTATE 42601)。 新しく追加されたストレージ・パスを活用するため、またはドロップされるストレージ・パスからコンテナーを除去するには、一時自動ストレージ表スペースをドロップしてから再作成する必要があります。
- コンテナー操作および REBALANCE 節は、表スペースが
『DMS リバランサーがアクティブ』状態
にあると指定できません (SQLSTATE 55041)。 - USING STOGROUP 節は、TEMPORARY 表スペースには指定できません (SQLSTATE 42858)。
- 以下の節は、 Db2 pureScale® 環境ではサポートされていません。
- ADD db-container-clause
- BEGIN NEW STRIPE SET db-container-clause
- DROP db-container-clause
- REBALANCE
- RESIZE db-container-clause
- USING STOGROUP
- ADD、DROP、RESIZE、EXTEND、REDUCE、LOWER HIGH WATER MARK、および BEGIN_STRIPE_SET 節を MANAGED BY AUTOMATIC STORAGE 節または USING STOGROUP 節と一緒に使用することはできません (SQLSTATE 429BC)。
- USING STOGROUP 節は、表スペースが
「リバランサーがアクティブ」
状態にある場合は指定できません (SQLSTATE 55041)。 - コンテナー・サイズの制限: DMS 表スペースでは、コンテナーの長さはエクステント・サイズ・ページの長さの 2 倍以上でなければなりません (SQLSTATE 54039)。 コンテナーの最大サイズは、オペレーティング・システムによって 異なります。
- コンテナー定義の制限長: 各コンテナー定義には、53 バイトに加えて、コンテナー名を格納するために必要なバイト数が必要です。 表スペースのすべてのコンテナー定義を結合した長さは、208 キロバイトを超えることはできません (SQLSTATE 54034)。
注
- デフォルトのコンテナー操作は、ALTER TABLESPACE ステートメントで指定されるコンテナー操作ですが、 この操作は特定のデータベース・パーティションに明示的に向けられません。 こうしたコンテナー操作は、 ステートメントにリストされていない任意のデータベース・パーティションに向けられます。 デフォルトのコンテナー操作がどのデータベース・パーティションにも向けられない場合には、コンテナー操作ではすべてのデータベース・パーティションに明示的に言及するので、警告が出されます (SQLSTATE 01589)。
- スペースが表スペースに追加されるか表スペースから削除され、トランザクションがコミットされた後、 コンテナー間で表スペースの内容のバランス再調整が行われることがあります。 バランス再調整中も、表スペースへのアクセスは制限されません。
- 表スペースが OFFLINE 状態であり、コンテナーがアクセス可能な場合は、すべてのアプリケーションを切断し、再びデータベースに接続することで、表スペースを OFFLINE 状態から解放できます。 別の方法として、SWITCH ONLINE オプションを使用すると、残りのデータベースは稼働状態で使用中のまま、表スペースは OFFLINE から脱する (稼働状態になる) ことができます。
- 表スペースに複数のコンテナーを追加する場合は、バランスの再調整のコストが一度だけで済むように、これらのコンテナーを同じステートメントで追加することをお勧めします。 単一トランザクションで別々の ALTER TABLESPACE ステートメントを使用して、 同じ表スペースにコンテナーを追加するとエラーになります (SQLSTATE 55041)。
- 存在しないコンテナーについて拡張、縮小、またはサイズ変更、またはドロップをしようとすると、 エラーが発生します (SQLSTATE 428B2)。
- コンテナーを拡張、軽減またはサイズ変更する場合、このコンテナー・タイプは、 コンテナーが作成されたときに使用されたタイプと適合しなければなりません (SQLSTATE 428B2)。
- 1 つのトランザクションで、同じ表スペースに対して別個の ALTER TABLESPACE ステートメントを使用して、 複数のコンテナー・サイズを変更しようとすると、エラーが発生します (SQLSTATE 55041)。
- パーティション・データベースで、複数のデータベース・パーティションが同じ物理ノードに存在する場合、 それらのデータベース・パーティションに同じデバイスまたは特定のパスを指定することはできません (SQLSTATE 42730)。 この環境の場合、 それぞれのデータベース・パーティションごとにユニークな container-string を指定するか、 または相対パス名を使用してください。
- 表スペース定義はトランザクションであり、表スペース定義に 対する変更はコミット時にカタログ表に反映されますが、 新しい定義のバッファー・プールは、 データベースの次回始動時まで使用することはできません。 ALTER TABLESPACE ステートメントの実行時に使用されていたバッファー・プールは、暫定的に使用され続けます。
- REDUCE、RESIZE、または DROP オプションは必要に応じて DMS 表スペースの未使用エクステントの解放を試み、REDUCE オプションは自動ストレージ表スペースの未使用エクステントの解放を試みます。 未使用エクステントを除去すると、スペースの使用量を正確に表す値まで表スペースの最高水準点を下げることができ、その後、表スペース・サイズをさらに減らすことができます。
- 大きな DMS 表スペースへの変換: 変換後は、COMMIT ステートメントを実行してから、表スペースの記憶容量を増やすことを推奨します。
- 表スペースで自動サイズ変更が使用可能に設定されている場合、MAXSIZE 表スペース属性が NONE に設定済みでなければ増やす必要があります。
- 自動サイズ変更が無効な表スペースの場合には、次の 2 つの選択肢があります。
- AUTORESIZE YES オプションを指定した ALTER TABLESPACE ステートメントを実行して、自動サイズ変更を有効にする。
- ストライプ・セットを追加し、既存のコンテナーのサイズを拡張して、記憶容量を増やす。
- 索引は、 REBUILD オプションを指定した REORG INDEXES ALL コマンドを使用して再作成できます。 パーティション表については、ALLOW NO ACCESS オプションを指定します。
- あるいは、表を (INPLACE ではなく) 再編成することもできます。それにより、すべての索引が再作成され、表がページあたり 255 を超える行をサポートできるようになります。
『ドロップ・ペンディング』
状態にあるストレージ・パス上にコンテナーがある自動ストレージ表スペースを再平衡化すると、こうしたコンテナーがドロップされます。 ドロップされるコンテナーから送出されるデータを保持するために、新しいコンテナーを作成しなければならない場合があります。 こうしたコンテナーを作成できるようにするには、データベース内の他のストレージ・パス上に十分なフリー・スペースがなければなりません。十分にないと、エラーが戻ります (SQLSTATE 57011)。 フリー・スペースの実際の所要量は、最高水準点エクステントの場所、変更されているストライプ・セットなど多くの要因によって異なります。 しかし、この操作が成功するためには、少なくとも、ドロップするコンテナーで消費されているスペースと同じ量のフリー・スペースが他のストレージ・パス上に存在していなければなりません。- REBALANCE 節が指定されているものの、新しいコンテナーを作成したり既存のコンテナーをドロップしたりする必要はないとデータ・サーバーが判断する場合、再平衡化は行われず、このステートメントは警告を出して正常に行われます (SQLSTATE 01690)。
- 新しく追加したパスにコンテナーを追加する場合のほか、既存のストレージ・パス上にコンテナーを追加する場合にも REBALANCE 操作を使用できます。 表スペース内の各ストライプ・セットが検査され、特定のストライプ・セットによって使用されていないストレージ・パスが検出されます。 検出された各ストレージ・パスに十分なフリー・スペースがあれば、新しいコンテナーが作成されます。 そのコンテナーのサイズは、ストライプ・セット内の他のコンテナーと同じになります。 これは、あるストレージ・パスでスペースが無くなり、(他のパス上にストライプ・セットを作成することによって) スペースが無くなったストレージ・パスの使用が表スペースで停止され、そのパスに別のストレージが提供された場合に役立ちます。 この場合、新しいパスは追加されませんが、そのストレージ・パスが以前に含まれていなかったストライプ・セット内に組み込まれるようにするために再平衡化が試行されます。
- 自動ストレージ表スペースの再平衡化が進行中であっても、自動サイズ変更が生じる可能性があります。
- MANAGED BY AUTOMATIC STORAGE 節を使用して自動ストレージで DMS 表スペースが使用可能な場合、この表スペースにはユーザー定義 (非自動ストレージ) コンテナーの 1 つ以上のストライプ・セットと、自動ストレージ・コンテナーの 1 つ以上のストライプ・セットが含まれます。 (REBALANCE 節を使用して) 表スペースを再平衡化すると、すべてのユーザー定義コンテナーが除去されます。 データベース・マネージャーは、ユーザー定義コンテナーから移動するデータを保持するために、既存の自動ストレージ・コンテナーを拡張するか、新しい自動ストレージ・コンテナーを作成する場合があります。
- 代替構文: Db2 の以前のバージョンおよび他のデータベース製品との互換性のために、以下がサポートされています。 これらの代替は非標準であり、使用すべきではありません。
- DBPARTITIONNUM の代わりに NODE を指定できます。
- DBPARTITIONNUMS の代わりに NODES を指定できます。
- Db2 Developer-C Edition の場合:
- MAXSIZE を指定せずに自動サイズ変更の表スペースを変更すると、MAXSIZE に暗黙的に残りの容量が設定されます (最大値は定義済みのストレージ・サイズです)。
- 定義済みのストレージ・サイズを超えて、すべての表スペースのコンテナー・サイズをサイズ変更、追加、または拡張しようとすると失敗します。
- コミットされていない後続の ALTER TABLESPACE がある場合、表スペースの変更は失敗します。
例
- 例 1: PAYROLL 表スペースにデバイスを追加します。
ALTER TABLESPACE PAYROLL ADD (DEVICE '/dev/rhdisk9' 10000)
- 例 2: ACCOUNTING 表スペースのプリフェッチ・サイズと入出力オーバーヘッドを変更します。
ALTER TABLESPACE ACCOUNTING PREFETCHSIZE 64 OVERHEAD 19.3
- 例 3: 表スペース TS1 を作成した後、コンテナーをサイズ変更して、
すべてのコンテナーのサイズが 2000 ページになるようにします。 (このサイズ変更を実行する 3 つの異なる ALTER TABLESPACE ステートメントを示します。)
またはCREATE TABLESPACE TS1 MANAGED BY DATABASE USING (FILE '/conts/cont0' 1000, DEVICE '/dev/rcont1' 500, FILE 'cont2' 700) ALTER TABLESPACE TS1 RESIZE (FILE '/conts/cont0' 2000, DEVICE '/dev/rcont1' 2000, FILE 'cont2' 2000)
またはALTER TABLESPACE TS1 RESIZE (ALL 2000)
ALTER TABLESPACE TS1 EXTEND (FILE '/conts/cont0' 1000, DEVICE '/dev/rcont1' 1500, FILE 'cont2' 1300)
- 例 4: DATA_TS 表スペースにあるすべてのコンテナーを 1000 ページだけ拡張します。
ALTER TABLESPACE DATA_TS EXTEND (ALL 1000)
- 例 5: INDEX_TS 表スペースにあるすべてのコンテナーのサイズを 100 メガバイト (MB) に変更します。
ALTER TABLESPACE INDEX_TS RESIZE (ALL 100 M)
- 例 6: 3 つの新規コンテナーを追加します。 1 番目のコンテナーを拡張し、2 番目をサイズ変更します。
ALTER TABLESPACE TS0 ADD (FILE 'cont2' 2000, FILE 'cont3' 2000) ADD (FILE 'cont4' 2000) EXTEND (FILE 'cont0' 100) RESIZE (FILE 'cont1' 3000)
- 例 7: 表スペース TSO がデータベース・パーティション 0、1、および 2 に存在します。 データベース・パーティション 0 に新規のコンテナーを追加し、 データベース・パーティション 1 のすべてのコンテナーを拡張し、 明示的に指定されたデータベース・パーティション (つまり、データベース・パーティション 0 および 1) 以外のすべてのデータベース・パーティションのコンテナーのサイズを変更します。
この例では RESIZE 節がデフォルトのコンテナー節で、データベース・パーティション 2 で実行されます。他の操作は明示的にデータベース・パーティション 0 および 1 に向けられるからです。 しかしデータベース・パーティションが 2 つしかない場合、ステートメントは正常に実行されますが、 デフォルトのコンテナーが指定されたものの使用されていないことを示す警告が出されます (SQL1758W)。ALTER TABLESPACE TS0 ADD (FILE 'A' 200) ON DBPARTITIONNUM (0) EXTEND (ALL 200) ON DBPARTITIONNUM (1) RESIZE (FILE 'B' 500)
- 例 8: 表スペース DMS_TS1 の自動サイズ変更オプションを使用可能にし、その最大サイズを 256 メガバイトに設定します。
ALTER TABLESPACE DMS_TS1 AUTORESIZE YES MAXSIZE 256 M
- 例 9: 表スペース AUTOSTORE1 の自動サイズ変更オプションを使用可能にし、その増加率を 5% に変更します。
ALTER TABLESPACE AUTOSTORE1 AUTORESIZE YES INCREASESIZE 5 PERCENT
- 例 10: MY_TS という自動サイズ変更可能表スペースの増加率を 512 K バイトに変更し、その最大サイズを最大限に設定します。
ALTER TABLESPACE MY_TS INCREASESIZE 512 K MAXSIZE NONE
- 例 11: データベース管理表スペース DMS_TS10 の自動ストレージを使用可能にし、使用するストレージ・グループを sg_3 にします。
ALTER TABLESPACE DMS_TS10 MANAGED BY AUTOMATIC STORAGE USING STOGROUP sg_3
- 例 12: ALTER DATABASE ステートメントは、現在接続しているデータベースから、パス /db/filesystem1 および /db/filesystem2 を除去しました。 除去されたパスを使用する表スペースは、PRODTS1、PRODTS2、および PRODTS3 という名前の表スペースのみでした。 これらの表スペースを再平衡化してください。 3 つの ALTER TABLESPACE ステートメントを使用しなければなりません。
ALTER TABLESPACE PRODTS1 REBALANCE ALTER TABLESPACE PRODTS2 REBALANCE ALTER TABLESPACE PRODTS3 REBALANCE
- 例 13: データベース管理表スペース DATA1 の自動ストレージを使用可能にし、この表スペースの既存の非自動ストレージ・コンテナーすべてを除去します。 最初のステートメントをコミットしてからでなければ、2 番目のステートメントを実行することはできません。
ALTER TABLESPACE DATA1 MANAGED BY AUTOMATIC STORAGE ALTER TABLESPACE DATA1 REBALANCE
- 例 14: 再利用可能なストレージ属性が指定されている自動ストレージ表スペースに対してエクステントの移動をトリガーし、コンテナーのサイズを 10 MB ずつ削減します。
ALTER TABLESPACE DMS_TS1 REDUCE 10 M
- 例 15: 再利用可能なストレージ属性が指定されている非自動ストレージ表スペースに対してエクステントの移動をトリガーし、その後、各コンテナーのサイズを 10 MB ずつ削減します。
ALTER TABLESPACE TBSP1 LOWER HIGH WATER MARK ALTER TABLESPACE TBSP1 REDUCE (ALL CONTAINERS 10 M)