SQL 解説書
ALTER TABLESPACE ステートメントは、
以下の方法で既存の表スペースを変更する場合に使用されます。
- DMS 表スペース (MANAGED BY DATABASE オプションによって作成) にコンテナーを追加する。
- DMS 表スペース (MANAGED BY DATABASE オプションによって作成) にあるコンテナーのサイズを大きくする。
- 現在コンテナーがない区分 (あるいはノード) にある SMS 表スペースに、
コンテナーを追加する。
- 表スペースの PREFETCHSIZE 設定値を変更する。
- 表スペースの表に対して使用する BUFFERPOOL を変更する。
- 表スペースの OVERHEAD 設定値を変更する。
- 表スペースの TRANSFERRATE 設定値を変更する。
呼び出し
このステートメントは、アプリケーション・プログラムに組み込むか、
あるいは対話式に発行することができます。
このステートメントは、動的に準備可能な実行可能ステートメントです。
しかし、バインド・オプション DYNAMICRULES BIND を適用する場合、
ステートメントを動的に準備することはできません (SQLSTATE 42509)。
許可
このステートメントの許可 ID には、SYSCTRL 権限または SYSADM 権限がなければなりません。
構文
>>-ALTER--TABLESPACE--tablespace-name--------------------------->
.-------------------------------------------------------------------------------------------.
V |
>---------+-ADD--+-| database-container-clause |--+-----------------------+-+-----------------+--+>
| | '-| on-nodes-clause |--' | |
| '-| system-container-clause |--| on-nodes-clause |--------' |
| (1) |
+--+-EXTEND-+---------+-| database-container-clause |-+---+-----------------------+-+
| '-RESIZE-' '-| all-containers-clause |------' '-| on-nodes-clause |--' |
+-PREFETCHSIZE--+-number-of-pages-+--------------------------------------------------+
| '-integer--+-K-+--' |
| +-M-+ |
| '-G-' |
+-BUFFERPOOL--bufferpool-name--------------------------------------------------------+
+-OVERHEAD--number-of-milliseconds---------------------------------------------------+
+-TRANSFERRATE--number-of-milliseconds-----------------------------------------------+
+-DROPPED TABLE RECOVERY--+-ON--+----------------------------------------------------+
| '-OFF-' |
'-SWITCH ONLINE----------------------------------------------------------------------'
>--------------------------------------------------------------><
database-container-clause
.-,------------------------------------------------------------.
V |
|---(------+-FILE---+--'--container-string--'----+-number-of-pages-+--+---)-->
'-DEVICE-' '-integer--+-K-+--'
+-M-+
'-G-'
>---------------------------------------------------------------|
system-container-clause
.-,-------------------------.
V |
|---(-----'--container-string--'---+---)------------------------|
on-nodes-clause
|---ON----+-NODE--+--(------------------------------------------>
'-NODES-'
.-,--------------------------------------.
V |
>--------node-number1--+--------------------+--+--)-------------|
'-TO--node-number2---'
all-containers-clause
.-CONTAINERS--.
|---(--ALL--+-------------+---+-number-of-pages-+---)-----------|
'-integer--+-K-+--'
+-M-+
'-G-'
注:
- 同じステートメントに ADD、EXTEND、および RESIZE 文節を指定することはできません。
説明
- tablespace-name
- 表スペースの名前を指定します。
これは、1 つの部分からなる名前です。
これは、長形式 SQL 識別子です (通常識別子または区切り識別子のいずれか)。
- ADD
- ADD は、新しいコンテナーを表スペースに追加することを指定します。
- EXTEND
- EXTEND は、既存のコンテナーのサイズを増やすように指示します。
指定されるサイズは、既存のコンテナーに追加されるサイズです。
all-containers-clause が指定されると、
表スペースにあるすべてのコンテナーがこのサイズで拡張されます。
- RESIZE
- RESIZE は、既存のコンテナーのサイズが変更されることを指定します (コンテナー・サイズを小さくすることはできません)。
指定されるサイズが、コンテナーの新しいサイズになります。
all-containers-clause が指定されると、
表スペースにあるすべてのコンテナーがこのサイズに変更されます。
- database-container-clause
- DMS 表スペースに 1 つまたは複数のコンテナーを追加します。
表スペースは、
すでにアプリケーション・サーバーに存在する DMS 表スペースを指定するものでなければなりません。
*** ページの container-clause の説明を参照してください。
- system-container-clause
- 指定の区分あるいはノードにある SMS 表スペースに、1 つまたは複数のコンテナーを追加します。
表スペースは、
すでにアプリケーション・サーバーに存在する SMS 表スペースを指定するものでなければなりません。
表スペースに対して指定する区分にコンテナーがあってはなりません (SQLSTATE 42921)。
*** ページの system-containers の説明を参照してください。
- on-nodes-clause
- 追加されるコンテナーの区分を指定します。
*** ページの on-nodes-clause の説明を参照してください。
- all-containers-clause
- DMS 表スペースにあるコンテナーすべてを拡張またはサイズ変更します。
表スペースは、
すでにアプリケーション・サーバーに存在する DMS 表スペースを指定するものでなければなりません。
- PREFETCHSIZE number-of-pages
- データの事前取り出しの実行中に、
表スペースから読み取られる PAGESIZE ページの数を指定します。
この事前取り出しサイズ値は整数値としても指定でき、
その後に K (K バイトの場合)、M (M バイトの場合)、または G (G バイトの場合) を付けます。
このように指定した場合、ページ・サイズで分割されたバイト数のフロアは、
事前取り出しサイズのページ値の数を判別するために使用します。
事前取り出しでは、照会に必要なデータがその照会で参照される前に読み取られるため、
照会では入出力の実行を待たずにすみます。
- BUFFERPOOL bufferpool-name
- この表スペースの表に対して使用するバッファー・プールの名前を指定します。
バッファー・プールは、現在データベースに存在している必要があります (SQLSTATE 42704)。
バッファー・プールに対して、
この表スペースのノードグループを定義する必要があります (SQLSTATE 42735)。
- OVERHEAD number-of-milliseconds
- number-of-milliseconds (ミリ秒数) は、
入出力制御装置のオーバーヘッドとディスク・シーク待ち時間を
ミリ秒単位で指定する数値リテラルです (整数、10 進数、または浮動小数点数)。
この数値がすべてのコンテナーで同一でない場合、
それは表スペースに属するすべてのコンテナーの平均でなければなりません。
この値は、照会の最適化の過程で入出力コストを判別するのに使用されます。
- TRANSFERRATE number-of-milliseconds
- number-of-milliseconds は、
1 ページ (4K または 8K) をメモリーに読み込むための時間をミリ秒単位で指定する数値リテラルです (整数、
10 進数、または浮動小数点数)。
この数値がすべてのコンテナーで同一でない場合、
それは表スペースに属するすべてのコンテナーの平均でなければなりません。
この値は、照会の最適化の過程で入出力コストを判別するのに使用されます。
- DROPPED TABLE RECOVERY
- 指定された表スペースから除去された表は、
ROLLFORWARD コマンドの RECOVER DROPPED TABLE ON オプションを使用して回復させることができます。
- SWITCH ONLINE
- OFFLINE 状態の表スペースは、コンテナーがアクセス可能であれば、オンラインになります。
コンテナーがアクセス可能でなければ、エラーが戻されます (SQLSTATE 57048)。
注
- PREFETCHSIZE、OVERHEAD、
および TRANSFERRATE の各パラメーターに最適な値を選択するための手引きと、
バランスの再調整に関する情報が、管理の手引き に記載されています。
- 新しいコンテナーが追加されて、トランザクションがコミットされると、
表スペースの内容はコンテナー間で自動的にバランスの再調整がなされます。
バランス再調整中も、表スペースへのアクセスは制限されません。
- 表スペースが OFFLINE 状態で、コンテナーがアクセス可能である場合、
すべてのアプリケーションを切断してから、もう一度データベースへ接続すれば、
表スペースは OFFLINE 状態から脱することができます。
別の方法として、SWITCH ONLINE オプションを使用すると、
残りのデータベースは稼働状態で使用中のまま、
表スペースは OFFLINE から脱する (稼働状態になる) ことができます。
- 表スペースに複数のコンテナーを追加する場合は、
バランスの再調整のコストが一度だけで済むように、
これらのコンテナーを同じステートメントで追加することをお勧めします。
単一トランザクションで別々の ALTER TABLESPACE ステートメントを使用して、
同じ表スペースにコンテナーを追加するとエラーになります (SQLSTATE 55041)。
- 同じ ALTER TABLESPACE ステートメントを使用して、
表スペースの複数のコンテナー・サイズを変更しながら新しいコンテナーを追加することはできません (SQLSTATE 429BC)。
複数のコンテナーのサイズを変更する際、
1 つのステートメントに EXTEND 節と RESIZE 節を同時に使用することはできません (SQLSTATE 429BC)。
- RESIZE を使用して、コンテナー・サイズを小さくすることはできません。
コンテナーのサイズを小さくしようとすると、エラーが発生します (SQLSTATE 560B0)。
- 存在しないコンテナーについて拡張またはサイズ変更しようとすると、
エラーが発生します (SQLSTATE 428B2)。
- コンテナーを拡張またはサイズ変更する場合、このコンテナー・タイプは、
コンテナーが作成されたときに使用されたタイプと適合しなければなりません (SQLSTATE 428B2)。
- コンテナーが拡張またはサイズ変更されてから、
トランザクションがコミットされると、
表スペースの内容はコンテナー間で自動的にバランスの再調整がなされます。
バランス再調整中も、表スペースへのアクセスは制限されません。
- 表スペースで複数のコンテナーを拡張する場合、
バランスの再調整のコストが一度だけで済むように、
これらのコンテナーを同じステートメントで追加することをお勧めします。
これは、複数のコンテナーをサイズ変更する場合にも同じです。
同じ表スペースで別個の ALTER TABLESPACE ステートメントを使用するものの、
1 つのトランザクションで複数のコンテナー・サイズを変更しようとすると、
エラーが発生します (SQLSTATE 55041)。
- 区分データベースで、複数の区分が同じ物理ノードに存在する場合、
このような区分に同じ装置または特定のパスを指定することはできません (SQLSTATE 42730)。
この環境の場合、それぞれの区分ごとに固有の container-string を指定するか、
または相対パス名を使用してください。
- 表スペース定義はトランザクションで、表スペース定義に
対する変更はコミット時にカタログ表に反映されますが、
新しい定義のバッファー・プールは、
データベースの次回始動時まで使用することはできません。
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 TABLESPACES を使用して、サイズを変更)。
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)
[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]