RDS for Db2 のデータベースのストアドプロシージャ
このトピックで説明した組み込みのストアドプロシージャは、Amazon RDS for Db2 のデータベースを管理します。これらのプロシージャを実行する場合、マスターユーザーはまず rdsadmin データベースに接続する必要があります。
これらのストアドプロシージャは、さまざまなタスクで使用されます。これはすべてを網羅したリストではありません。
構文、パラメータ、使用上の注意、例については、以下の組み込みストアドプロシージャを参照してください。
ストアドプロシージャ
rdsadmin.create_database
データベースを作成します。
構文
db2 "call rdsadmin.create_database( 'database_name', 'database_page_size', 'database_code_set', 'database_territory', 'database_collation', 'database_autoconfigure_str', 'database_non-restrictive')"
パラメータ
注記
このストアドプロシージャでは、必須パラメータの組み合わせは検証されません。rdsadmin.get_task_status を呼び出すと、database_codeset、database_territory、database_collation の組み合わせが無効であるため、ユーザー定義関数がエラーを返す可能性があります。詳細については、 IBM Db2 ドキュメントの「Choosing the code page, territory, and collation for your database
以下のパラメータは必須です。
database_name-
作成するデータベースの名前。データ型は
varcharです。
以下のパラメータはオプションです。
database_page_size-
データベースのデフォルトのページサイズ。有効な値は、
4096、8192、16384、32768です。データ型はintegerです。デフォルトは8192です。重要
Amazon RDS は、4 KiB、8 KiB、16 KiB のページでの書き込みの原子性をサポートしています。一方、32 KiB のページには、Torn Writes (一部のデータしかディスクに書き込まれない) というリスクがあります。32 KiB のページを使用している場合は、ポイントインタイムリカバリと自動バックアップを有効にすることをお勧めします。有効にしない場合、データの不整合があるページから復元できなくなるリスクが発生します。詳細については、「バックアップの概要」および「Amazon RDS の DB インスタンスを特定の時点に復元する」を参照してください。
database_code_set-
データベースのコードセット。データ型は
varcharです。デフォルトはUTF-8です。 database_territory-
データベースの 2 文字の国コード。データ型は
varcharです。デフォルトはUSです。 database_collation-
データベースに保存されている文字列をソートして比較する方法を決定する照合順序。データ型は
varcharです。有効な値:
-
COMPATIBILITY– IBM Db2 バージョン 2 の照合順序。 -
EBCDIC_819_037– ISO ラテンコードページ、照合、CCSID 037 (EBCDIC 米国英語)。 -
EBCDIC_819_500– ISO ラテンコードページ、照合、CCSID 500 (EBCDIC 国際標準)。 -
EBCDIC_850_037– ASCII ラテンコードページ、照合、CCSID 037 (EBCDIC 米国英語)。 -
EBCDIC_850_500– ASCII ラテンコードページ、照合、CCSID 500 (EBCDIC 国際標準)。 -
EBCDIC_932_5026– ASCII 日本語コードページ、照合、CCSID 5026 (EBCDIC 米国英語)。 -
EBCDIC_932_5035– ASCII 日本語コードページ、照合、CCSID 5035 (EBCDIC 国際標準)。 -
EBCDIC_1252_037– Windows ラテンコードページ、照合、CCSID 037 (EBCDIC 米国英語)。 -
EBCDIC_1252_500– Windows ラテンコードページ、照合、CCSID 500 (EBCDIC 国際標準)。 -
IDENTITY- デフォルトの照合順序。文字列はバイト単位で比較されます。 -
IDENTITY_16BIT– Compatibility Encoding Scheme for UTF-16: 8-bit (CESU-8) 照合順序。詳細については、Unicode Consortium ウェブサイトの「Unicode Technical Report #26」を参照してください。 -
NLSCHAR– タイ語のコードページ (CP874) でのみ使用されます。 -
SYSTEM–SYSTEMを使用する場合、データベースはdatabase_codesetとdatabase_territoryで自動的に照合順序を使用します。
デフォルトは
IDENTITYです。さらに、RDS for Db2 は照合順序のグループ
language-aware-collationおよびlocale-sensitive-collationをサポートしています。詳細については、 IBM Db2 ドキュメントの「Choosing a collation for a Unicode database」を参照してください。 -
database_autoconfigure_str-
AUTOCONFIGUREコマンド構文 ('AUTOCONFIGURE APPLY DB'など)。データ型はvarcharです。デフォルトは空の文字列または null です。詳細については、IBM Db2 ドキュメントの「AUTOCONFIGURE コマンド
」を参照してください。 database_non-restrictive-
データベース内のデフォルトの権限と特権の付与。データ型は
varcharです。デフォルトはNです。有効な値:
-
N– 作成されたデータベースは制限されており、権限や特権を付与しません。 -
Y– 作成されたデータベースは制限がなく、特別なグループPUBLICにアクセス許可のセットを付与します。詳細については、「IBM Db2 ドキュメント」の「Default privileges granted on creating a database」を参照してください。
-
使用に関する注意事項
db2_compatibility_vector パラメータを変更する場合は、データベースを作成する前に変更します。詳細については、「db2_compatibility_vector パラメータの設定」を参照してください。
特別な考慮事項:
-
Db2 インスタンスに送信される
CREATE DATABASEコマンドでは、RESTRICTIVEオプションを使用します。 -
RDS for Db2 は
AUTOMATIC STORAGEテーブルスペースのみを使用します。 -
RDS for Db2 では、
NUMSEGSとDFT_EXTENT_SZにデフォルト値が使用されます。 -
RDS for Db2 ではストレージ暗号化が使用され、データベース暗号化はサポートされていません。
これらのコマンドの詳細については、 IBM Db2 ドキュメントの「CREATE DATABASE command
rdsadmin.create_database を呼び出す前に、rdsadmin データベースに接続する必要があります。次の例では、master_username と master_password を RDS for Db2 DB インスタンス情報に置き換えます。
db2 connect to rdsadmin usermaster_usernameusingmaster_password
データベースの作成ステータスを確認する方法については、「rdsadmin.get_task_status」を参照してください。
rdsadmin.create_database を呼び出すときに返されるエラーメッセージについては、「ストアドプロシージャエラー」を参照してください。
例
次の例では、日本向けの database_code_set パラメータ、database_territory パラメータ、および database_collation パラメータを適切に組み合わせた TESTJP というデータベースを作成します。
db2 "call rdsadmin.create_database('TESTJP', 4096, 'IBM-437', 'JP', 'SYSTEM')"
rdsadmin.deactivate_database
データベースを非アクティブ化します。
構文
db2 "call rdsadmin.deactivate_database( ?, 'database_name')"
パラメータ
次のアウトプットパラメータが必要です。
- ?
-
エラーメッセージを出力するパラメータマーカー。このパラメータは、
?のみを受け入れます。
次の入力パラメータが必要です。
database_name-
非アクティブ化するデータベースの名前。データ型は
varcharです。
使用に関する注意事項
データベースを非アクティブ化してメモリリソースを節約したり、他のデータベース設定を変更したりできます。非アクティブ化されたデータベースをオンラインに戻すには、rdsadmin.activate_database ストアドプロシージャを呼び出します。
rdsadmin.deactivate_database ストアドプロシージャを呼び出して、レプリケーション中にソース DB インスタンスのデータベースを非アクティブ化することはできません。
データベースの非アクティブ化ステータスを確認する方法については、「rdsadmin.get_task_status」を参照してください。
rdsadmin.deactivate_database を呼び出すときに返されるエラーメッセージについては、「ストアドプロシージャエラー」を参照してください。
例
次の例では、TESTDB という名前のデータベースを非アクティブ化します。
db2 "call rdsadmin.deactivate_database(?, 'TESTDB')"
rdsadmin.activate_database
データベースをアクティブ化します。
rdsadmin.reactivate_database と rdsadmin.activate_database との違いについては、「使用に関する注意事項」を参照してください。
構文
db2 "call rdsadmin.activate_database( ?, 'database_name')"
パラメータ
次のアウトプットパラメータが必要です。
- ?
-
エラーメッセージを出力するパラメータマーカー。このパラメータは、
?のみを受け入れます。
次の入力パラメータが必要です。
database_name-
非アクティブ化するデータベースの名前。データ型は
varcharです。
使用に関する注意事項
すべてのデータベースは、作成時にデフォルトでアクティブ化されます。スタンドアロン DB インスタンスのデータベースを非アクティブ化してメモリリソースを節約したり、他のデータベース設定を変更したりする場合は、rdsadmin.activate_database ストアドプロシージャを呼び出してデータベースを再度アクティブ化します。
このストアドプロシージャは、スタンドアロン DB インスタンスにあり、rdsadmin.deactivate_database ストアドプロシージャを呼び出して非アクティブ化されたデータベースのみをアクティブ化します。レプリカソース DB インスタンスでデータベースをアクティブ化するには、rdsadmin.reactivate_database ストアドプロシージャを呼び出す必要があります。
データベースのアクティブ化ステータスを確認する方法については、「rdsadmin.get_task_status」を参照してください。
rdsadmin.activate_database を呼び出すときに返されるエラーメッセージについては、「ストアドプロシージャエラー」を参照してください。
例
次の例では、TESTDB という名前のデータベースをアクティブ化します。
db2 "call rdsadmin.activate_database(?, 'TESTDB')"
rdsadmin.reactivate_database
データベースを再アクティブ化します。
rdsadmin.activate_database と rdsadmin.reactivate_database との違いについては、「使用に関する注意事項」を参照してください。
構文
db2 "call rdsadmin.reactivate_database( ?, 'database_name')"
パラメータ
次のアウトプットパラメータが必要です。
- ?
-
エラーメッセージを出力するパラメータマーカー。このパラメータは、
?のみを受け入れます。
次の入力パラメータが必要です。
database_name-
再アクティブ化するデータベースの名前。データ型は
varcharです。
使用に関する注意事項
rdsadmin.reactivate_database ストアドプロシージャを呼び出すと、このストアドプロシージャはまず rdsadmin.deactivate_database ストアドプロシージャを呼び出してデータベースを非アクティブ化し、次に rdsadmin.activate_database ストアドプロシージャを呼び出してデータベースをアクティブ化します。
データベース設定を変更した後、RDS for Db2 DB インスタンスのデータベースを再アクティブ化する必要が生じる場合があります。データベースを再アクティブ化する必要があるかどうかを判断するには、データベースに接続して db2 get db cfg show detail を実行します。
スタンドアロン DB インスタンスのデータベースの場合、rdsadmin.reactivate_database ストアプロシージャを使用してデータベースを再アクティブ化できます。または、rdsadmin.deactivate_database ストアドプロシージャを既に呼び出している場合は、rdsadmin.activate_database ストアドプロシージャを代わりに呼び出すことができます。
レプリカソース DB インスタンスのデータベースの場合、rdsadmin.reactivate_database ストアプロシージャを使用してデータベースを再アクティブ化する必要があります。
データベースの再アクティブ化ステータスを確認する方法については、「rdsadmin.get_task_status」を参照してください。
rdsadmin.reactivate_database を呼び出すときに返されるエラーメッセージについては、「ストアドプロシージャエラー」を参照してください。
例
次の例では、TESTDB という名前のデータベースを再アクティブ化します。
db2 "call rdsadmin.reactivate_database(?, 'TESTDB')"
rdsadmin.drop_database
データベースを削除します。
構文
db2 "call rdsadmin.drop_database('database_name')"
パラメータ
以下のパラメータは必須です。
database_name-
削除するデータベースの名前。データ型は
varcharです。
使用に関する注意事項
次の条件が満たされた場合にのみ、rdsadmin.drop_database を呼び出してデータベースを削除できます。
-
Amazon RDS コンソールまたは AWS CLI を使用して RDS for Db2 DB インスタンスを作成したときにデータベースの名前を指定しなかった。詳細については、「DB インスタンスの作成」を参照してください。
-
rdsadmin.create_database ストアドプロシージャを呼び出してデータベースを作成した。
-
rdsadmin.restore_database ストアドプロシージャを呼び出して、オフラインまたはバックアップされたイメージからデータベースを復元した。
rdsadmin.drop_database を呼び出す前に、rdsadmin データベースに接続する必要があります。次の例では、master_username と master_password を RDS for Db2 DB インスタンス情報に置き換えます。
db2 connect to rdsadmin usermaster_usernameusingmaster_password
データベースの削除ステータスを確認する方法については、「rdsadmin.get_task_status」を参照してください。
rdsadmin.drop_database を呼び出すときに返されるエラーメッセージについては、「ストアドプロシージャエラー」を参照してください。
例
次の例では、TESTDB という名前のデータベースを削除します。
db2 "call rdsadmin.drop_database('TESTDB')"
rdsadmin.update_db_param
データベースパラメータを更新します。
構文
db2 "call rdsadmin.update_db_param( 'database_name', 'parameter_to_modify', 'changed_value', 'restart_database')"
パラメータ
以下のパラメータは必須です。
database_name-
タスクの実行対象のデータベース名。データ型は
varcharです。 parameter_to_modify-
変更するパラメータの名前。データ型は
varcharです。詳細については、「Amazon RDS for Db2 パラメータ」を参照してください。 changed_value-
パラメータの値を変更した後の値。データ型は
varcharです。
次のパラメータはオプションです。
restart_database-
再起動が必要な場合に RDS がデータベースを再起動するかどうかを指定します。データ型は
varcharです。logprimaryおよびlogfilsizを変更するには、このパラメータを'YES'に設定します。
使用に関する注意事項
データベースパラメータの更新ステータスを確認する方法については、「rdsadmin.get_task_status」を参照してください。
rdsadmin.update_db_param を呼び出すときに返されるエラーメッセージについては、「ストアドプロシージャエラー」を参照してください。
例
例 1: パラメータを更新する
次の例では、TESTDB というデータベースで archretrydelay パラメータを 100 に更新します。
db2 "call rdsadmin.update_db_param( 'TESTDB', 'archretrydelay', '100')"
例 2: オブジェクトの検証を回避する
次の例では、依存関係のチェックを回避するために、TESTDB というデータベースにおいて作成したオブジェクトの検証を延期します。
db2 "call rdsadmin.update_db_param( 'TESTDB', 'auto_reval', 'deferred_force')"
rdsadmin.set_configuration
データベースの特定の設定を構成します。
構文
db2 "call rdsadmin.set_configuration( 'name', 'value')"
パラメータ
以下のパラメータは必須です。
.name-
構成設定の名前。データ型は
varcharです。 の値を保持します。-
構成設定の値。データ型は
varcharです。
使用に関する注意事項
次の表は、rdsadmin.set_configuration で制御できる構成設定を示しています。
| 名前 | 説明 |
|---|---|
|
|
復元オペレーション中に作成するバッファの数。この値は、DB インスタンスクラスの合計メモリサイズよりも小さくする必要があります。この設定を構成しないと、Db2 は復元オペレーション中に使用する値を決定します。詳細については、「IBM Db2 ドキュメント」の「RESTORE DATABASE コマンド |
|
|
復元オペレーション中に作成するバッファマニピュレータの数。この値は、DB インスタンスの vCPU 数の 2 倍未満にする必要があります。この設定を構成しないと、Db2 は復元オペレーション中に使用する値を決定します。詳細については、「IBM Db2 ドキュメント」の「RESTORE DATABASE コマンド |
|
|
Amazon S3 オペレーションからの復元中に使用するパス (または I/O ストリーム) の数。この設定を使用するには、複数のバックアップファイルが必要です。この値は、複数のデータベースバックアップファイルを並行して復元するため、大量のデータを含むデータベースを復元する際のパフォーマンスを向上させることができます。データベースバックアップファイルの数と一致するようにこの値を設定することをお勧めします。詳細については、「IBM Db2 ドキュメント」の「BACKUP DATABASE command |
|
|
最初にバックアップ全体を RDS for Db2 DB インスタンスにダウンロードしてから抽出するのではなく、復元中にバックアップデータを直接ストリーミングするかどうかを指定します。 |
例
例 1: 作成するバッファの数を指定する
次の例では、RESTORE_DATABASE_NUM_BUFFERS を 150 に設定します。
db2 "call rdsadmin.set_configuration( 'RESTORE_DATABASE_NUM_BUFFERS', '150')"
例 2: 作成するバッファマニピュレータの数を指定する
次の例では、RESTORE_DATABASE_PARALLELISM を 8 に設定します。
db2 "call rdsadmin.set_configuration( 'RESTORE_DATABASE_PARALLELISM', '8')"
例 3: 復元時に使用するパスまたは I/O ストリームの数を指定する
次の例では、RESTORE_DATABASE_NUM_MULTI_PATHS を 5 に設定します。
db2 "call rdsadmin.set_configuration( 'RESTORE_DATABASE_NUM_MULTI_PATHS', '5')"
例 4: バックアップデータをストリーミングするための復元の設定
次の例では、USE_STREAMING_RESTORE を TRUE に設定します。
db2 "call rdsadmin.set_configuration( 'USE_STREAMING_RESTORE', 'TRUE')"
rdsadmin.show_configuration
ストアドプロシージャ rdsadmin.set_configuration を使用して指定できる現在の設定を返します。
構文
db2 "call rdsadmin.show_configuration( 'name')"
パラメータ
次のパラメータはオプションです。
.name-
情報を返す対象の構成設定の名前。データ型は
varcharです。有効な設定名は次のとおりです。
-
RESTORE_DATABASE_NUM_BUFFERS– 復元オペレーション中に作成するバッファの数。 -
RESTORE_DATABASE_PARALLELISM– 復元オペレーション中に作成するバッファマニピュレータの数。 -
RESTORE_DATABASE_NUM_MULTI_PATHS– Amazon S3 オペレーションからの復元中に使用するパス (または I/O ストリーム) の数。 -
USE_STREAMING_RESTORE– 最初にバックアップデータ全体を RDS for Db2 DB インスタンスにダウンロードしてから抽出するのではなく、復元中にバックアップデータを直接ストリーミングするかどうかを指定します。
-
使用に関する注意事項
構成設定の名前を指定しないと、rdsadmin.show_configuration は、ストアドプロシージャ rdsadmin.set_configuration を使用して設定できるすべての構成設定に関する情報を返します。
例
次の例では、現在の RESTORE_DATABASE_PARALLELISM 設定に関する情報を返します。
db2 "call rdsadmin.show_configuration( 'RESTORE_DATABASE_PARALLELISM')"
rdsadmin.backup_database
RDS for Db2 DB インスタンスから Amazon S3 バケットにデータベースをバックアップします。
構文
db2 "call rdsadmin.backup_database( ?, 'database_name', 's3_bucket_name', 's3_prefix', 'backup_type', 'compression_option', 'util_impact_priority', 'num_files', 'parallelism', 'num_buffers')"
パラメータ
次のアウトプットパラメータが必要です。
- ?
-
エラーメッセージを出力するパラメータマーカー。このパラメータは、
?のみを受け入れます。
次の入力パラメータが必要となります。
database_name-
バックアップする RDS for Db2 DB インスタンスのターゲットデータベースの名前。データ型は
varcharです。データベースは DB インスタンスに存在する必要があります。
rdsadminデータベースをバックアップすることはできません。 s3_bucket_name-
バックアップを保存する Amazon S3 バケットの名前。データ型は
varcharです。S3 バケットは、
rdsadmin.backup_databaseを呼び出す前に存在し、バックアップする RDS for Db2 DB インスタンスのターゲットデータベースと同じ AWS リージョンにあり、DB インスタンスにアタッチされた IAM ロールを介してアクセスできる必要があります。 s3_prefix-
RDS for Db2 がバックアップファイルをアップロードする Amazon S3 へのパスのプレフィックス。データ型は
varcharです。プレフィックスは 1024 文字に限定されます。先頭または末尾にスラッシュ (/) を含めることはできません。IBM から Amazon S3 へのストリーミングには制限があるため、プレフィックスにサブディレクトリを含めることをお勧めします。
ファイル管理を向上させるために、RDS for Db2 は
s3_prefixの後に追加のディレクトリを作成します。RDS for Db2 は、すべてのバックアップファイルをs3_prefix/dbi_resource_id/db_nameにアップロードします。num_filesを1より大きく設定した場合、db_nameディレクトリには複数のバックアップファイルが含まれます。バックアップファイルの Amazon S3 の場所の例を次に示します。この例では、
backups/dailyはs3_prefixパラメータに設定された値です。backups/daily/db-5N7FXOY4GDP7RG2NSH2ZTAI2W4/SAMPLEDB backup_type-
バックアップ中にデータベースを使用できるかどうかを決定するバックアップのタイプ。データ型は
varcharです。有効な値:
-
OFFLINE– バックアップ中はデータベースを使用できません。このタイプは高速ですが、ダウンタイムが発生します。 -
ONLINE– データベースはバックアップ中も引き続き使用できます。デフォルトで、ONLINEはINCLUDE LOGSに設定されています。
-
以下のパラメータはオプションです。
compression_option-
バックアップ時間、CPU 使用率、ストレージコストに影響する圧縮アルゴリズムのタイプ。データ型は
varcharです。デフォルトはNONEです。有効な値:
-
NONE– 最大ファイルサイズ、最小の CPU 使用率、最低のストレージコスト。 -
STANDARD– 標準 Db2 圧縮。libdb2compr.soを使用します。 -
ZLIB– 拡張された Db2 圧縮。libdb2zcompr.soを使用しますが、CPU を大量に消費し、ストレージコストが最も高くなります。
-
util_impact_priority-
バックアップがシステムリソースに与える影響を制御する設定。データ型は
integerです。有効な値:1–100(低から高)。デフォルトは50です。値を小さくすると、バックアップがシステムリソースに与える影響は軽減されますが、データベースのバックアップにかかる時間が長くなる可能性があります。値を大きくすると、データベースのバックアップを迅速に完了できますが、他のオペレーションに影響する可能性があります。実際の影響は、システム全体の使用率と
util_impact_lim設定によって異なります。パラメータグループでutil_impact_lim設定を表示および変更できます。詳細については、「Amazon RDS for Db2 パラメータ」を参照してください。 num_files-
Amazon S3 への並列アップロードストリームの数。データ型は
integerです。有効値:1~256。このパラメータは、Amazon RDS が自動的に計算するデフォルトのバックアップパフォーマンスを確認した後にのみ設定することをお勧めします。値を大きくすると、特に高帯域幅接続では、大規模なバックアップのパフォーマンスが向上する可能性がありますが、特定の時点では、値を大きくするとパフォーマンスが低下します。また、使用可能なシステムリソースとネットワーク容量も考慮してください。
parallelism-
バックアップユーティリティが並行して読み取ることができるテーブルスペースの数。データ型は
integerです。有効値:1~256。このパラメータは、Db2 エンジンが最適な値として自動的に計算するバックアップパフォーマンスをデフォルトで確認した後にのみ設定することをお勧めします。このパラメータを設定すると、Amazon RDS は使用可能なプロセッサに対して検証し、処理能力が不十分な場合はバックアップリクエストを実行しません。
num_buffers-
使用するバッファの数。データ型は
integerです。有効値:1~268435456。このパラメータは、Amazon RDS がメモリに基づいて自動的に計算するデフォルトのバックアップパフォーマンスを確認した後にのみ設定することをお勧めします。このパラメータを設定すると、Amazon RDS は使用可能なメモリに対して検証し、使用可能なメモリが不足している場合はバックアップリクエストを実行しません。複数の場所にバックアップする場合 (
num_filesが1以上に設定されている)、バッファの数が多いほどパフォーマンスが向上する可能性があります。compression_optionをNONEに設定しない場合、num_buffersとparallelismを増やすことでパフォーマンスを向上させることができます。
使用に関する注意事項
このストアドプロシージャは、Amazon S3 統合を使用してデータベースのバックアップを Amazon S3 バケットに直接ストリーミングする非同期バックアップタスクを作成します。ローカルサーバーからでも、RDS for Db2 DB インスタンスからでもバックアップを作成し、Amazon S3 にストリーミングして、任意の場所に復元することができます。データベースを RDS for Db2 DB インスタンスに復元する方法については、「rdsadmin.restore_database」を参照してください。
ストアドプロシージャを呼び出す前に、以下の考慮事項を確認してください。
-
一度にバックアップできるデータベースは 1 つだけです。
-
DB インスタンスでバックアップと復元を同時に実行することはできません。
-
AWS KMS を使用した Amazon S3 サーバー側の暗号化 (SSE−KMS) はサポートされていません。S3 バケットが SSE-KMS に設定されている場合でも、S3 バケットにアップロードされたファイルは SSE-KMS 暗号化を使用しません。
-
バックアップファイルを Amazon S3 にストリーミングするには、統合を既に設定しておく必要があります。詳細については、「Amazon RDS for Db2 DB インスタンスと Amazon S3 の統合」を参照してください。
-
RDS for Db2 DB インスタンスから Amazon S3 と対話できるようにするには、プライベートサブネットが使用する VPC と Amazon S3 ゲートウェイエンドポイントが必要です。詳細については、「ステップ 1: これにより、Amazon S3 用の VPC ゲートウェイエンドポイントを作成する」および「ステップ 2: Amazon S3 の VPC ゲートウェイエンドポイントが存在することを確認する」を参照してください。
rdsadmin.backup_database を呼び出す前に、rdsadmin データベースに接続する必要があります。次の例では、master_username と master_password を RDS for Db2 DB インスタンス情報に置き換えます。
db2 connect to rdsadmin usermaster_usernameusingmaster_password
データベースをバックアップしたら、必ず接続を終了してください。
terminate
データベースのバックアップのステータスを確認する方法については、「rdsadmin.get_task_status」を参照してください。
rdsadmin.backup_database を呼び出すときに返されるエラーメッセージについては、「ストアドプロシージャエラー」を参照してください。
例
すべての例では、MYDB というデータベースを amzn-s3-demo-bucket という Amazon S3 バケットにバックアップし、s3_prefix を backups/daily に設定します。
例 #1: 使用率の中央値と単一のアップロードストリームでデータベースがオフラインで使用不可であることを指定する
次の例では、データベースはオフラインです。これは高速ですが、バックアップ中にデータベースが使用できないことを意味します。この例では、ファイルの圧縮を実行せず、システムリソースへの影響は中程度であり、Amazon S3 への単一のアップロードストリームを使用します。
db2 call "rdsadmin.backup_database( ?, 'MYDB', 'amzn-s3-demo-bucket', 'backups/daily', 'OFFLINE', 'NONE', 50, 1)"
例 #2: 拡張圧縮、使用率の中央値、少数の並列アップロードストリームを使用して、データベースをオンラインで使用可能に指定する
次の例では、データベースはオンラインであり、バックアップ中に使用できます。この例では、拡張圧縮を実行するため、ファイルサイズは小さくなりますが、CPU を大量に消費します。システムリソースへの影響の中央値をわずかに上回り、Amazon S3 への 5 つのアップロードストリームを使用します。
db2 call "rdsadmin.backup_database( ?, 'MYDB', 'amzn-s3-demo-bucket', 'backups/daily', 'ONLINE', 'ZLIB', 60, 5)"
例 #3: デフォルトとシステム計算を使用して、データベースがオフラインで使用できないことを指定する
次の例では、データベースはオフラインです。これは高速ですが、バックアップ中にデータベースが使用できないことを意味します。この例では、ファイルのデフォルトの圧縮を使用し、システムリソースに影響を及ぼします。また、RDS for Db2 では、Amazon S3 への並列アップロードストリームの数、並列で読み取るテーブルスペース、使用するバッファを計算できます。
db2 "call rdsadmin.backup_database( ?, 'MYDB', 'amzn-s3-demo-bucket', 'backups/daily', 'OFFLINE')"
例 #4: 圧縮なし、高使用率、カスタム計算で、データベースをオフラインで使用不可に指定する
次の例では、データベースはオフラインです。これは高速ですが、バックアップ中にデータベースが使用できないことを意味します。この例では、ファイルの圧縮は行わず、システムリソースに大きな影響を与え、Amazon S3 への 20 のアップロードストリームを使用します。並列に読み取るテーブルスペースの最大数を設定します。これにより、処理能力が不十分な場合にバックアップリクエストが失敗する可能性があります。また、使用するバッファの最大数も設定するため、メモリが不足している場合にバックアップリクエストが失敗する可能性があります。
db2 "call rdsadmin.backup_database( ?, 'MYDB', 'amzn-s3-demo-bucket', 'backups/daily', 'OFFLINE', 'NONE', 90, 20, 256, 268435456)"
rdsadmin.restore_database
Amazon S3 バケットから RDS for Db2 DB インスタンスにデータベースを復元します。
構文
db2 "call rdsadmin.restore_database( ?, 'database_name', 's3_bucket_name', 's3_prefix',restore_timestamp, 'backup_type')"
パラメータ
次のアウトプットパラメータが必要です。
- ?
-
エラーメッセージを出力するパラメータマーカー。このパラメータは、
?のみを受け入れます。
次の入力パラメータが必要となります。
database_name-
RDS for Db2 で復元するターゲットデータベースの名前。データ型は
varcharです。例えば、ソースデータベース名が
TESTDBである場合、database_nameをNEWDBに設定すると、Amazon RDS はソースデータベースとしてNEWDBを復元します。 s3_bucket_name-
バックアップが保存されている Amazon S3 バケットの名前。データ型は
varcharです。 s3_prefix-
ダウンロード中のファイルマッチングに使用するプレフィックス。データ型は
varcharです。このパラメータが空の場合、Amazon S3 バケット内のすべてのファイルが処理されます。プレフィックスの例は、次のとおりです。
backupfolder/SAMPLE.0.rdsdb.DBPART000.20230615010101 restore_timestamp-
データベースバックアップイメージのタイムスタンプ。データ型は
varcharです。タイムスタンプはバックアップファイル名に含まれます。例えば、
20230615010101はファイル名SAMPLE.0.rdsdb.DBPART000.20230615010101.001のタイムスタンプです。 backup_type-
バックアップのタイプ。データ型は
varcharです。有効な値:OFFLINE、ONLINE。ほぼゼロのダウンタイムで移行するには、
ONLINEを使用します。詳細については、「Amazon RDS for Db2 のダウンタイムがほぼゼロの Linux から Linux への移行」を参照してください。
使用に関する注意事項
このストアドプロシージャを使用して、Db2 データベースを RDS for Db2 DB インスタンスに移行できます。詳細については、「AWS のサービスを使用して Db2 から Amazon RDS for Db2 にデータを移行する」を参照してください。このストアドプロシージャを使用して、同じデータベースの複数のコピーを異なるデータベース名で作成し、各コピーで同じ復元イメージを使用することもできます。
ストアドプロシージャを呼び出す前に、以下の考慮事項を確認してください。
-
データベースを復元する前に、バックアップとディスク上の元の Db2 データベースよりも大きいストレージスペースを RDS for Db2 DB インスタンス用にプロビジョンする必要があります。
USE_STREAMING_RESTOREを有効にした場合、バックアップを復元すると、Amazon RDS はバックアップファイルを S3 バケットから RDS for Db2 DB インスタンスに直接ストリーミングします。USE_STREAMING_RESTOREを有効にしない場合、バックアップサイズとディスク上の元の Db2 データベースサイズの合計以上のストレージスペースを RDS for Db2 DB インスタンス用にプロビジョニングする必要があります。詳細については、「Insufficient disk space」を参照してください。 -
バックアップを復元すると、Amazon RDS は RDS for Db2 DB インスタンスのバックアップファイルを抽出します。各バックアップファイルは 5 TB 以下である必要があります。バックアップファイルが 5 TB を超える場合は、バックアップファイルを小さいファイルに分割する必要があります。
-
rdsadmin.restore_databaseストアドプロシージャを使用してすべてのファイルを復元するには、ファイル名でタイムスタンプの後にファイル番号のサフィックスを含めません。例えば、s3_prefixbackupfolder/SAMPLE.0.rdsdb.DBPART000.20230615010101は、以下のファイルを復元します。SAMPLE.0.rdsdb.DBPART000.20230615010101.001 SAMPLE.0.rdsdb.DBPART000.20230615010101.002 SAMPLE.0.rdsdb.DBPART000.20230615010101.003 SAMPLE.0.rdsdb.DBPART000.20230615010101.004 SAMPLE.0.rdsdb.DBPART000.20230615010101.005 -
RDS for Db2 は、非自動ストレージをサポートしていません。詳細については、「Tablespaces not restored」を参照してください。
-
RDS for Db2 は、フェンスされていないルーチンをサポートしていません。詳細については、「Non-fenced routines not allowed」を参照してください。
-
データベースの復元オペレーションのパフォーマンスを向上させるには、RDS で使用するバッファの数、バッファマニピュレータの数、および複数のバックアップパスの数を設定できます。ストレージの使用量を最適化し、パフォーマンスを向上させるために、Amazon S3 から直接バックアップをストリーミングすることもできます。現在の設定を確認するには、rdsadmin.show_configuration を使用します。設定を変更するには、rdsadmin.set_configuration を使用します。
データベースをオンラインにして、データベースを復元した後に追加のトランザクションログを適用するには、「rdsadmin.rollforward_database」を参照してください。
データベースの復元状況の確認については、「rdsadmin.get_task_status」を参照してください。
rdsadmin.restore_database を呼び出すときに返されるエラーメッセージについては、「ストアドプロシージャエラー」を参照してください。
例
次の例では、s3_prefix backupfolder/SAMPLE.0.rdsdb.DBPART000.20230615010101 を持つ 1 つ以上のファイルでオフラインバックアップを復元します。
db2 "call rdsadmin.restore_database( ?, 'SAMPLE', 'amzn-s3-demo-bucket', 'backupfolder/SAMPLE.0.rdsdb.DBPART000.20230615010101', 20230615010101, 'OFFLINE')"
rdsadmin.rollforward_database
rdsadmin.restore_database を呼び出して、データベースをオンラインにし、データベースを復元した後に追加のトランザクションログを適用します。
構文
db2 "call rdsadmin.rollforward_database( ?, 'database_name', 's3_bucket_name',s3_prefix, 'rollforward_to_option', 'complete_rollforward')"
パラメータ
次のアウトプットパラメータが必要です。
- ?
-
エラーメッセージを出力するパラメータマーカー。このパラメータは、
?のみを受け入れます。
次の入力パラメータが必要となります。
database_name-
オペレーションの実行対象のデータベースの名前。データ型は
varcharです。 s3_bucket_name-
バックアップが保存されている Amazon S3 バケットの名前。データ型は
varcharです。 s3_prefix-
ダウンロード中のファイルマッチングに使用するプレフィックス。データ型は
varcharです。このパラメータが空の場合、S3 バケット内のすべてのファイルがダウンロードされます。プレフィックスの例は次のとおりです。
backupfolder/SAMPLE.0.rdsdb.DBPART000.20230615010101
次の入力パラメータは、オプションです。
rollforward_to_option-
ロールフォワードするポイント。データ型は
varcharです。有効な値:END_OF_LOGS、END_OF_BACKUP(タイムスタンプの形式はYYYY-MM-DD-HH.MM.SS)。デフォルトはEND_OF_LOGSです。 complete_rollforward-
ロールフォワードプロセスを完了するかどうかを指定します。データ型は
varcharです。デフォルトはTRUEです。TRUEの場合は、完了後、データベースはオンラインになり、アクセス可能になります。FALSEの場合は、データベースはROLL-FORWARD PENDING状態のままになります。
使用に関する注意事項
さまざまなシナリオにおいてオンプレミスで生成されたインクルードログを含むオンラインバックアップに rds.rollforward_database を使用できます。
シナリオ 1: データベースの復元、含まれているログのロールフォワード、データベースのオンライン化
rdsadmin.restore_database() が完了したら、例 1 の構文を使用して、トランザクションログを含むデータベースをオンラインにする。
シナリオ 2: データベースをオンラインにするが、含まれているログをロールフォワードしない。
rdsadmin.restore_database() が完了したら、例 2 の構文を使用して、トランザクションログなしでデータベースをオンラインにします。
シナリオ 3: バックアップに含まれるログをロールフォワードし、オンプレミスで生成された追加のトランザクションログを適用する
rdsadmin.restore_database() が完了したら、例 3 または例 4 の構文を使用して、データベースをオンラインにせずにログをロールフォワードします。
complete_rollforward を FALSE に設定すると、データベースは ROLL-FORWARD PENDING 状態になり、オフラインになります。データベースをオンラインにするには、rdsadmin.complete_rollforward を呼び出す必要があります。
データベースのロールフォワードステータスを確認する方法については、「rdsadmin.rollforward_status」を参照してください。
例
例 1: トランザクションログを含むデータベースをオンラインにする
次の例では、トランザクションログを使用してデータベースのオンラインバックアップにロールフォワードし、データベースをオンラインにします。
db2 "call rdsadmin.rollforward_database( ?, null, null, 'END_OF_LOGS', 'TRUE')"
例 2: トランザクションログなしでデータベースをオンラインにする
次の例では、トランザクションログなしでデータベースのオンラインバックアップにロールフォワードし、データベースをオンラインにします。
db2 "call rdsadmin.rollforward_database( ?, 'TESTDB', 'amzn-s3-demo-bucket', 'logsfolder/, 'END_OF_BACKUP', 'TRUE')"
例 3: トランザクションログを使用してデータベースをオンラインにしない
次の例では、トランザクションログを使用してデータベースのオンラインバックアップにロールフォワードします。ただし、データベースはオンラインにしません。
db2 "call rdsadmin.rollforward_database( ?, 'TESTDB', null, 'onlinebackup/TESTDB', 'END_OF_LOGS', 'FALSE')"
例 4: 追加のトランザクションログを使用してデータベースをオンラインにしない
次の例では、追加のトランザクションログを使用してデータベースのオンラインバックアップにロールフォワードします。ただし、データベースはオンラインにしません。
db2 "call rdsadmin.rollforward_database( ?, 'TESTDB', 'amzn-s3-demo-bucket', 'logsfolder/S0000155.LOG', 'END_OF_LOGS', 'FALSE')"
rdsadmin.rollforward_status
ROLLFORWARD DATABASE
の出力を返します。database_name QUERY STATUS
構文
db2 "call rdsadmin.rollforward_status( ?, 'database_name')"
パラメータ
次のアウトプットパラメータが必要です。
- ?
-
エラーメッセージを出力するパラメータマーカー。このパラメータは、
?のみを受け入れます。
次の入力パラメータが必要です。
database_name-
オペレーションの実行対象のデータベースの名前。データ型は
varcharです。
使用に関する注意事項
rdsadmin.rollforward_database を呼び出した後、rdsadmin.rollforward_status を呼び出して、データベースのロールフォワードのステータスを確認できます。
このストアドプロシージャのステータスを確認する方法については、「rdsadmin.get_task_status」を参照してください。
rdsadmin.complete_rollforward
データベースを ROLL-FORWARD PENDING 状態からオンラインにします。
構文
db2 "call rdsadmin.complete_rollforward( ?, 'database_name')"
パラメータ
次のアウトプットパラメータが必要です。
- ?
-
エラーメッセージを出力するパラメータマーカー。このパラメータは、
?のみを受け入れます。
次の入力パラメータが必要です。
database_name-
オンラインにするデータベースの名前。データ型は
varcharです。
使用に関する注意事項
complete_rollforward を FALSE に設定して rdsadmin.rollforward_database を呼び出すと、データベースは ROLL-FORWARD PENDING 状態になり、オフラインになります。ロールフォワードプロセスを完了し、データベースをオンラインにするには、rdsadmin.complete_rollforward を呼び出します。
ロールフォワードプロセスの完了のステータスを確認する方法については、「rdsadmin.rollforward_status」を参照してください。
例
次の例では、TESTDB データベースをオンラインにします。
db2 "call rdsadmin.complete_rollforward( ?, 'TESTDB')"
rdsadmin.db2pd_command
RDS for Db2 データベースに関する情報を収集します。
構文
db2 "call rdsadmin.db2pd_command('db2pd_cmd')"
パラメータ
次の入力パラメータが必要です。
db2pd_cmd-
実行する
db2pdコマンドの名前。データ型はvarcharです。パラメータはハイフンで始める必要があります。パラメータのリストについては、IBM Db2 ドキュメントの「db2pd - Db2 データベースのモニターおよびトラブルシューティングコマンド
」を参照してください。 次のオプションはサポートされていません。
-
-addnode -
-alldatabases -
-alldbp -
-alldbs -
-allmembers -
-alm_in_memory -
-cfinfo -
-cfpool -
-command -
-dbpartitionnum -
-debug -
-dump -
-everything -
-file | -o -
-ha -
-interactive -
-member -
-pages注記
-pages summaryがサポートされています。 -
-pdcollection -
-repeat -
-stack -
-totalmem
fileサブオプションはサポートされていません。例えば、db2pd -db testdb -tcbstats file=tcbstat.out。stacksオプションの使用はサポートされていません。例えば、db2pd -edus interval=5 top=10 stacks。 -
使用に関する注意事項
このストアドプロシージャは、RDS for Db2 データベース のモニタリングとトラブルシューティングに役立つ情報を収集します。
ストアドプロシージャは、IBM db2pd ユーティリティを使用してさまざまなコマンドを実行します。db2pd ユーティリティには SYSADM 権限が必要です (RDS for Db2 マスターユーザーにはない権限です)。ただし、Amazon RDS ストアドプロシージャを使用すると、マスターユーザーはユーティリティを使用してさまざまなコマンドを実行できます。このユーティリティの詳細については、IBM Db2 ドキュメントの「db2pd - Db2 データベースのモニターおよびトラブルシューティングコマンド
出力は最大 2 GB に制限されています。
データベースに関する情報の収集状況を確認する方法については、「rdsadmin.get_task_status」を参照してください。
例
例 1: DB インスタンスのアップタイムを返す
次の例は、RDS for Db2 DB インスタンスのアップタイムを返します。
db2 "call rdsadmin.db2pd_command('-')"
例 2: データベースのアップタイムを返す
次の例は、TESTDB という名前のデータベースのアップタイムを返します。
db2 "call rdsadmin.db2pd_command('-db TESTDB -')"
例 3: DB インスタンスのメモリ使用量を返す
次の例は、RDS for Db2 DB インスタンスのメモリ使用量を返します。
db2 "call rdsadmin.db2pd_command('-dbptnmem')"
例 4: DB インスタンスとデータベースのメモリセットを返す
次の例は、RDS for Db2 DB インスタンスとデータベース TESTDB のメモリセットを返します。
db2 "call rdsadmin.db2pd_command('-inst -db TESTDB -memsets')"
rdsadmin.force_application
RDS for Db2 データベースからアプリケーションを強制的に削除します。
構文
db2 "call rdsadmin.force_application( ?, 'applications')"
パラメータ
次のアウトプットパラメータが必要です。
- ?
-
エラーメッセージを出力するパラメータマーカー。このパラメータは、
?のみを受け入れます。
次の入力パラメータが必要です。
アプリケーション-
RDS for Db2 データベースから強制的に削除するアプリケーション。データ型は
varcharです。有効な値:ALLまたはapplication_handle。複数のアプリケーションの名前はカンマで区切ります。例: 「
application_handle_1,application_handle_2」。
使用に関する注意事項
このストアドプロシージャは、すべてのアプリケーションをデータベースから強制的に削除して、メンテナンスを実行できるようにします。
ストアドプロシージャは、IBM FORCE APPLICATION コマンドを使用します。FORCE APPLICATION コマンドには SYSADM、SYSMAINT、または SYSCTRL 権限が必要です (RDS for Db2 マスターユーザーにはない権限です)。ただし、Amazon RDS ストアドプロシージャを使用すると、マスターユーザーはコマンドを使用できます。詳細については、IBM Db2 ドキュメントの「FORCE APPLICATION コマンド
データベースからのアプリケーションの強制的な削除に関する状態を確認する方法については、「rdsadmin.get_task_status」を参照してください。
例
例 1: すべてのアプリケーションを指定する
次の例では、すべてのアプリケーションを RDS for Db2 データベースから強制的に削除します。
db2 "call rdsadmin.force_application( ?, 'ALL')"
例 2: 複数のアプリケーションを指定する
次の例では、RDS for Db2 データベースからアプリケーションハンドル 9991、8891、1192 を強制的に削除します。
db2 "call rdsadmin.force_application( ?, '9991, 8891, 1192')"
rdsadmin.set_archive_log_retention
指定した RDS for Db2 データベースのアーカイブログファイルを保持する時間 (時間単位) を設定します。
構文
db2 "call rdsadmin.set_archive_log_retention( ?, 'database_name', 'archive_log_retention_hours')"
パラメータ
次のアウトプットパラメータが必要です。
- ?
-
エラーメッセージを出力するパラメータマーカー。このパラメータは、
?のみを受け入れます。
次の入力パラメータが必要となります。
database_name-
アーカイブログの保持を設定するデータベースの名前。データ型は
varcharです。 archive_log_retention_hours-
アーカイブログファイルを保持する時間数。データ型は
smallintです。デフォルトは0で、最大は168(7 日間) です。値が
0の場合、Amazon RDS はアーカイブログファイルを保持しません。
使用に関する注意事項
デフォルトでは、RDS for Db2 はログを 5 分間保持します。変更データキャプチャ (CDC) の AWS DMS や IBM Q Replication などのレプリケーションツールを使用する場合は、これらのツールでログ保持を 5 分以上設定することをお勧めします。
rdsadmin.show_archive_log_retention を呼び出すと、現在のアーカイブログ保持の設定を表示できます。
rdsadmin データベースに対してアーカイブログ保持の設定を構成することはできません。
例
例 1: 保持時間を設定する
次の例は、TESTDB というデータベースのアーカイブログ保持時間を 24 時間に設定しています。
db2 "call rdsadmin.set_archive_log_retention( ?, 'TESTDB', '24')"
例 2: 保持時間を無効にする
次の例では、TESTDB というデータベースのアーカイブログ保持を無効にします。
db2 "call rdsadmin.set_archive_log_retention( ?, 'TESTDB', '0')"
rdsadmin.show_archive_log_retention
指定したデータベースに関する現在のアーカイブログ保持の設定を返します。
構文
db2 "call rdsadmin.show_archive_log_retention( ?, 'database_name')"
パラメータ
次のアウトプットパラメータが必要です。
- ?
-
エラーメッセージを出力するパラメータマーカー。このパラメータは、
?のみを受け入れます。
次の入力パラメータが必要です。
database_name-
アーカイブログ保持の設定を表示するデータベースの名前。データ型は
varcharです。
例
次の例は、TESTDB というデータベースのアーカイブログ保持の設定を示しています。
db2 "call rdsadmin.show_archive_log_retention( ?, 'TESTDB')"
rdsadmin.list_archive_log_information
アーカイブログファイルのサイズ、作成日時、指定したデータベースの個々のログファイルの名前などの詳細を返します。また、データベース内のログファイルで使用される合計ストレージ量も返します。
構文
db2 "call rdsadmin.list_archive_log_information( ?, 'database_name')"
パラメータ
次のアウトプットパラメータが必要です。
- ?
-
エラーメッセージを出力するパラメータマーカー。このパラメータは、
?のみを受け入れます。
次の入力パラメータが必要です。
database_name-
アーカイブログ情報を一覧表示するデータベースの名前。データ型は
varcharです。
例
次の例では、TESTDB というデータベースのアーカイブログ情報を返します。
db2 "call rdsadmin.list_archive_log_information( ?, 'TESTDB')"
rdsadmin.fgac_command
きめ細かなアクセス制御 (FGAC) コマンドを実行します。
構文
db2 "call rdsadmin.fgac_command( ?, 'database_name', 'fgac_cmd')"
パラメータ
次のアウトプットパラメータが必要です。
- ?
-
エラーメッセージを出力するパラメータマーカー。このパラメータは、
?のみを受け入れます。
次の入力パラメータが必要となります。
database_name-
FGAC コマンドを実行するデータベースの名前。データ型は
varcharです。 fgac_cmd-
実行するきめ細かなアクセス制御コマンド。データ型は
varcharです。次のコマンドは有効です。
-
ALTER MASK– 行と列のアクセス制御 (RCAC) の既存の列マスクを変更します。 -
ALTER PERMISSION– RCAC の既存の行アクセス許可のプロパティを変更します。 -
ALTER SECURITY POLICY– RCAC の既存のセキュリティポリシーを変更します。 -
ALTER SECURITY LABEL– ラベルベースアクセス制御 (LBAC) の既存のセキュリティラベルのプロパティを変更します。 -
ALTER TABLE– RCAC または LBAC コントロールの追加など、テーブル構造を変更します。 -
CREATE MASK– RCAC の新しい列マスクを作成します。 -
CREATE PERMISSION– RCAC の新しい行アクセス許可を作成します。 -
CREATE SECURITY LABEL– LBAC の新しいセキュリティラベルを作成します。 -
CREATE SECURITY POLICY– RCAC の新しいセキュリティポリシーを作成します。 -
DROP MASK– 既存の列マスクを削除します。 -
DROP PERMISSION– 既存の行アクセス許可を削除します。 -
DROP SECURITY LABEL– LBAC からセキュリティラベルを削除します。 -
DROP SECURITY POLICY– 既存の RCAC セキュリティポリシーを削除します。 -
GRANT EXEMPTION ON RULE– ユーザーが特定の LBAC ルールをバイパスできるようにします。 -
GRANT SECURITY LABEL– LBAC セキュリティラベルをユーザーに割り当てます。 -
REVOKE EXEMPTION ON RULE– LBAC ルールからユーザーの免除を削除します。 -
REVOKE SECURITY LABEL– ユーザーから LBAC セキュリティラベルを削除します。
-
使用に関する注意事項
このストアドプロシージャは、RDS for Db2 DB インスタンスのデータベース内のテーブルデータへの行または列レベルでのアクセスを制御します。RDS for Db2 は、データベースで 2 種類の FGAC をサポートしています。
-
ラベルベースアクセス制御 (LBAC)
-
行と列のアクセス制御 (RCAC)
ストアドプロシージャを呼び出す前に、以下の考慮事項を確認してください。
-
一重引用符 (') をエスケープするには、追加の一重引用符を使用します。次の例は
'apple'、'banana'および'fruit'をエスケープする方法を示しています。db2 "call rdsadmin.fgac_command( ?, 'testdb', 'CREATE SECURITY LABEL COMPONENT FRUITSET SET{''apple'',''banana''}')"db2 "call rdsadmin.fgac_command( ?, 'testdb', 'CREATE SECURITY LABEL COMPONENT FRUITTREE TREE(''fruit'' ROOT, ''apple'' UNDER ''fruit'', ''banana'' UNDER ''fruit'')')" -
角括弧 ([ ]) をエスケープするには、バックスラッシュ (\) を使用します。次の例は、
[''apple'',''banana'']をエスケープする方法を示しています。db2 "call rdsadmin.fgac_command( ?, ' testdb', 'CREATE SECURITY LABEL COMPONENT FRUITARRAY ARRAY\[''apple'',''banana''\]')"
例
次の例はすべて、testdb というデータベースで FGAC コマンドを実行します。
例 1: FRUITSET という名前の新しいセキュリティラベルを作成する
db2 "call rdsadmin.fgac_command( ?, 'testdb', 'CREATE SECURITY LABEL COMPONENT FRUITSET SET{''apple'',''banana''}')"
例 2: EMP_ID が 3 未満に設定されている場合に有効になる EMP_ID 列の新しいマスクを作成する
db2 "call rdsadmin.fgac_command( ?, 'testdb', 'CREATE MASK id_MASK ON EMPLOYEE FOR COLUMN EMP_ID RETURN CASE WHEN (EMP_ID < 3) THEN EMP_ID ELSE NULL END ENABLE')"
例 3: SESSION_USER が security_user に設定されている場合に有効になる DEPARTMENT 列の新しいマスクを作成する
db2 "call rdsadmin.fgac_command( ?, 'testdb', 'CREATE MASK DEPARTMENT_MASK ON EMPLOYEE FOR COLUMN DEPARTMENT RETURN CASE WHEN SESSION_USER = ''security_user'' THEN DEPARTMENT ELSE NULL END ENABLE')"
例 4: treelabel という名前の新しいセキュリティラベルを作成する
db2 "call rdsadmin.fgac_command( ?, 'testdb', 'CREATE SECURITY LABEL COMPONENT treelabel TREE(''COMPANY'' ROOT, ''HR'' UNDER ''COMPANY'', ''FINANCE'' UNDER ''COMPANY'', ''IT'' UNDER ''COMPANY'')')"