RDS for Db2 のテーブルスペースのストアドプロシージャ
このトピックで説明した組み込みのストアドプロシージャは、Amazon RDS for Db2 データベースのテーブルスペースを管理します。これらのプロシージャを実行する場合、マスターユーザーはまず rdsadmin データベースに接続する必要があります。
これらのストアドプロシージャは、さまざまなタスクで使用されます。これはすべてを網羅したリストではありません。
構文、パラメータ、使用上の注意、例については、以下の組み込みストアドプロシージャを参照してください。
ストアドプロシージャ
rdsadmin.create_tablespace
テーブルスペースを作成します。
構文
db2 "call rdsadmin.create_tablespace( 'database_name', 'tablespace_name', 'buffer_pool_name',tablespace_page_size,tablespace_initial_size,tablespace_increase_size, 'tablespace_type', 'tablespace_prefetch_size')"
パラメータ
以下のパラメータは必須です。
database_name-
テーブルスペースを作成するデータベースの名前。データ型は
varcharです。 tablespace_name-
作成するテーブルスペースの名前。データ型は
varcharです。テーブルスペース名には以下の制限があります。
-
このデータベース内の既存のテーブルスペース名と同じものは使用できません。
-
使用できるのは
_$#@a-zA-Z0-9の文字のみです。 -
_または$で始めることはできません。 -
SYSで始めることはできません。
-
以下のパラメータはオプションです。
buffer_pool_name-
テーブルスペースを割り当てるバッファプールの名前。データ型は
varcharです。デフォルトは空の文字列です。重要
テーブルスペースに関連付けるには、同じページサイズのバッファプールが既に存在している必要があります。
tablespace_page_size-
テーブルスペースのページサイズ (バイト単位)。データ型は
integerです。有効な値は、4096、8192、16384、32768です。デフォルトは、rdsadmin.create_database を呼び出してデータベースを作成した際に使用したページサイズです。重要
Amazon RDS は、4 KiB、8 KiB、16 KiB のページでの書き込みの原子性をサポートしています。一方、32 KiB のページには、Torn Writes (一部のデータしかディスクに書き込まれない) というリスクがあります。32 KiB のページを使用している場合は、ポイントインタイムリカバリと自動バックアップを有効にすることをお勧めします。有効にしない場合、データの不整合があるページから復元できなくなるリスクが発生します。詳細については、「バックアップの概要」および「Amazon RDS の DB インスタンスを特定の時点に復元する」を参照してください。
tablespace_initial_size-
テーブルスペースの初期サイズ (キロバイト (KB) 単位)。データ型は
integerです。有効な値:48以上。デフォルトは null です。値を設定しない場合、Db2 が適切な値を設定します。
注記
一時的なテーブルスペースはシステムが管理するため、このパラメータは一時テーブルスペースには適用されません。
tablespace_increase_size-
テーブルスペースがフルになったときにテーブルスペースを増やす割合。データ型は
integerです。有効値:1~100。デフォルトは null です。値を設定しない場合、Db2 が適切な値を設定します。
注記
一時的なテーブルスペースはシステムが管理するため、このパラメータは一時テーブルスペースには適用されません。
tablespace_type-
テーブルスペースのタイプ。データ型は
charです。有効な値:U(ユーザーデータの場合)、T(ユーザー一時データの場合)、またはS(システム一時データの場合)。デフォルトはUです。 tablespace_prefetch_size-
テーブルスペースのプリフェッチページサイズ。データ型は
charです。有効な値:AUTOMATIC(大文字と小文字を区別しない)、または 32767 以下のゼロ以外の正の整数。
使用に関する注意事項
RDS for Db2 は常にデータ用の大規模なデータベースを作成します。
テーブルスペースの作成ステータスを確認する方法については、「rdsadmin.get_task_status」を参照してください。
例
例 1: テーブルスペースを作成してバッファプールを割り当てる
次の例では、SP8 という名前のテーブルスペースを作成し、TESTDB という名前のデータベースに BP8 という名前のバッファプールを割り当てます。このテーブルスペースでは、初期テーブルスペースページサイズは 4,096 バイト、初期テーブルスペースは 1,000 KB、テーブルサイズの増加は 50% に設定されています。
db2 "call rdsadmin.create_tablespace( 'TESTDB', 'SP8', 'BP8', 4096, 1000, 50)"
例 2: 一時テーブルスペースを作成してバッファプールを割り当てる
次の例では、SP8 という名前の一時テーブルスペースを作成します。TESTDB というデータベースに対して、サイズが 8 KiB の BP8 というバッファプールを割り当てます。
db2 "call rdsadmin.create_tablespace( 'TESTDB', 'SP8', 'BP8', 8192, NULL, NULL, 'T')"
例 3: テーブルスペースを作成し、プリフェッチページサイズを割り当てる
次の例では、TESTDB というデータベースの SP8 というテーブルスペースを作成します。テーブルスペースの初期テーブルスペース増加サイズは 50、プリフェッチページサイズは 800 です。
db2 "call rdsadmin.create_tablespace( 'TESTDB', 'SP8', NULL, NULL, NULL, 50, NULL, '800')"
rdsadmin.alter_tablespace
テーブルスペースを変更します。
構文
db2 "call rdsadmin.alter_tablespace( 'database_name', 'tablespace_name', 'buffer_pool_name',tablespace_increase_size, 'max_size', 'reduce_max', 'reduce_stop', 'reduce_value', 'lower_high_water', 'lower_high_water_stop', 'switch_online', 'tablespace_prefetch_size')"
パラメータ
以下のパラメータは必須です。
database_name-
テーブルスペースを使用するデータベースの名前。データ型は
varcharです。 tablespace_name-
変更するテーブルスペースの名前。データ型は
varcharです。
以下のパラメータはオプションです。
buffer_pool_name-
テーブルスペースを割り当てるバッファプールの名前。データ型は
varcharです。デフォルトは空の文字列です。重要
テーブルスペースに関連付けるには、同じページサイズのバッファプールが既に存在している必要があります。
tablespace_increase_size-
テーブルスペースがフルになったときにテーブルスペースを増やす割合。データ型は
integerです。有効値:1~100。デフォルトは0です。 max_size-
テーブルスペースの最大サイズ。データ型は
varcharです。有効な値:integerK|M|G、またはNONE。デフォルトはNONEです。 reduce_max-
ハイウォーターマークを上限まで減らすかどうかを指定します。データ型は
charです。デフォルトはNです。 reduce_stop-
前の
reduce_maxまたはreduce_valueコマンドを中断するかどうかを指定します。データ型はcharです。デフォルトはNです。 reduce_value-
テーブルスペースのハイウォーターマークを減らす際の数または割合。データ型は
varcharです。有効な値:integerK|M|G、または1~100。デフォルトはNです。 lower_high_water-
ALTER TABLESPACE LOWER HIGH WATER MARKコマンドを実行するかどうかを指定します。データ型はcharです。デフォルトはNです。 lower_high_water_stop-
ALTER TABLESPACE LOWER HIGH WATER MARK STOPコマンドを実行するかどうかを指定します。データ型はcharです。デフォルトはNです。 switch_online-
ALTER TABLESPACE SWITCH ONLINEコマンドを実行するかどうかを指定します。データ型はcharです。デフォルトはNです。 tablespace_prefetch_size-
テーブルスペースのプリフェッチページサイズ。データ型は
charです。有効な値:AUTOMATIC(大文字と小文字を区別しない)、または 32767 以下のゼロ以外の正の整数。注記
このパラメータは、
buffer_pool_name、table_increase_size、max_size、switch_onlineでのみ機能します。reduce_max、reduce_stop、reduce_value、lower_high_water、lower_high_water_stopでは機能しません。
使用に関する注意事項
ストアドプロシージャを呼び出す前に、以下の考慮事項を確認してください。
-
rdsadmin.alter_tablespaceストアドプロシージャは、ユーザーの一時データに対してテーブルスペースのtablespace_typeをTに設定した場合は機能しません。 -
オプションパラメータ
reduce_max、reduce_stop、reduce_value、lower_high_water、lower_high_water_stop、switch_onlineは、相互に排他的です。rdsadmin.alter_tablespaceコマンドで、buffer_pool_nameなどの他のオプションパラメータと組み合わせることはできません。詳細については、「Statement not valid」を参照してください。
テーブルスペースの変更ステータスを確認する方法については、「rdsadmin.get_task_status」を参照してください。
ストアドプロシージャを呼び出すときに返されるエラーメッセージについては、「ストアドプロシージャエラー」を参照してください。
例
例 1: ハイウォーターマークを下げる
次の例では、SP8 というテーブルスペースを変更し、BP8 というデータベースに TESTDB というバッファプールを割り当てて、ハイウォーターマークを下げます。
db2 "call rdsadmin.alter_tablespace( 'TESTDB', 'SP8', 'BP8', NULL, NULL, 'Y')"
例 2: ハイウォーターマークを減らす
次の例では、データベース TBSP_TEST の TESTDB というテーブルスペースで REDUCE MAX コマンドを実行します。
db2 "call rdsadmin.alter_tablespace( 'TESTDB', 'TBSP_TEST', NULL, NULL, NULL, 'Y')"
例 3: コマンドを中断して高いウォーターマークを減らす
次の例では、データベース TBSP_TEST の TESTDB というテーブルスペースで REDUCE STOP コマンドを実行します。
db2 "call rdsadmin.alter_tablespace( 'TESTDB', 'TBSP_TEST', NULL, NULL, NULL, NULL, 'Y')"
例 4: 既存のプリフェッチページサイズの変更
次の例では、TSBP_TEST というテーブルスペースに対して 64 コマンドを実行し、既存のプリフェッチページサイズを ALTER TABLESPACE SWITCH ONLINE に変更します。
db2 "call rdsadmin.alter_tablespace( 'TESTDB', 'TBSP_TEST', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, ‘Y’, ‘64’)"
rdsadmin.rename_tablespace
テーブルスペース名を変更します。
構文
db2 "call rdsadmin.rename_tablespace( ?, 'database_name', 'source_tablespace_name', 'target_tablespace_name')"
パラメータ
以下のパラメータは必須です。
- ?
-
エラーメッセージを出力するパラメータマーカー。このパラメーターが受け入れるのは、? のみです。
database_name-
テーブルスペースが属するデータベースの名前。データ型は
varcharです。 source_tablespace_name-
変更するテーブルスペースの名前。データ型は
varcharです。 target_tablespace_name-
新しいテーブルスペースの名前。データ型は
varcharです。新しい名前には以下の制限があります。
-
既存のテーブルスペース名と同じものは使用できません。
-
使用できるのは
_$#@a-zA-Z0-9の文字のみです。 -
_または$で始めることはできません。 -
SYSで始めることはできません。
-
使用に関する注意事項
テーブルスペースの名前変更ステータスを確認する方法については、「rdsadmin.get_task_status」を参照してください。
rdsadmin データベースに属するテーブルスペースの名前を変更することはできません。
例
次の例は、TESTDB というデータベース内の SP8 という名前のテーブルスペースを SP9 に変更します。
db2 "call rdsadmin.rename_tablespace( ?, 'TESTDB', 'SP8', 'SP9')"
rdsadmin.drop_tablespace
テーブルスペースを削除します。
構文
db2 "call rdsadmin.drop_tablespace( 'database_name', 'tablespace_name')"
パラメータ
以下のパラメータは必須です。
database_name-
テーブルスペースが属するデータベースの名前。データ型は
varcharです。 tablespace_name-
削除するテーブルスペースの名前。データ型は
varcharです。
使用に関する注意事項
テーブルスペースの削除ステータスを確認する方法については、「rdsadmin.get_task_status」を参照してください。
例
次の例では、TESTDB というデータベースの SP8 というテーブルスペースを削除します。
db2 "call rdsadmin.drop_tablespace( 'TESTDB', 'SP8')"