Amazon RDS for Db2 DB インスタンスの一般的なデータベースタスクの実行
Amazon RDS for Db2 DB インスタンスのデータベースに関連する特定の一般的な DBA タスクを実行することができます。マネージドサービスエクスペリエンスを提供するうえで、Amazon RDS は DB インスタンスへのシェルアクセスを提供していません。また、マスターユーザーは、SYSADM
、SYSMAINT
、または SYSCTRL
権限を必要とするコマンドやユーティリティを実行できません。
バッファプールの管理
RDS for Db2 データベースのバッファプールを作成、変更、または削除できます。バッファプールを作成、変更、または削除するには、マスターユーザーが使用できない上位レベルの SYSADMIN
権限が必要です。代わりに、Amazon RDS ストアドプロシージャを使用します。
バッファプールは、フラッシュすることもできます。
バッファプールの作成
RDS for Db2 データベースのバッファプールを作成するには、 rdsadmin.create_bufferpool
ストアドプロシージャを呼び出します。詳細については、IBM Db2 ドキュメントの「CREATE BUFFERPOOL statement
バッファプールを作成するには
-
RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、
rdsadmin
データベースに接続します。次の例で、master_username
とmaster_password
を自分の情報に置き換えます。db2 "connect to rdsadmin user
master_user
usingmaster_password
" -
rdsadmin.create_bufferpool
を呼び出してバッファプールを作成します。詳細については、「rdsadmin.create_bufferpool」を参照してください。db2 "call rdsadmin.create_bufferpool( '
database_name
', 'buffer_pool_name
',buffer_pool_size
, 'immediate
', 'automatic
',page_size
,number_block_pages
,block_size
)"
バッファプールの変更
RDS for Db2 データベースのバッファプールを変更するには、 rdsadmin.alter_bufferpool
ストアドプロシージャを呼び出します。詳細については、IBM Db2 ドキュメントの「ALTER BUFFERPOOL statement
バッファプールを変更するには
-
RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、
rdsadmin
データベースに接続します。次の例で、master_username
とmaster_password
を自分の情報に置き換えます。db2 "connect to rdsadmin user
master_username
usingmaster_password
" -
rdsadmin.alter_bufferpool
を呼び出してバッファプールを変更します。詳細については、「rdsadmin.alter_bufferpool」を参照してください。db2 "call rdsadmin.alter_bufferpool( '
database_name
', 'buffer_pool_name
',buffer_pool_size
, 'immediate
', 'automatic
',change_number_blocks
,number_block_pages
,block_size
)"
バッファプールの削除
RDS for Db2 データベースのバッファプールを削除するには、 rdsadmin.drop_bufferpool
ストアドプロシージャを呼び出します。詳細については、IBM Db2 ドキュメントの「Dropping buffer pools
重要
削除するバッファプールにテーブルスペースが割り当てられていないことを確認します。
バッファプールを削除するには
-
RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、
rdsadmin
データベースに接続します。次の例で、master_username
とmaster_password
を自分の情報に置き換えます。db2 "connect to rdsadmin user
master_user
usingmaster_password
" -
rdsadmin.drop_bufferpool
を呼び出してバッファプールを削除します。詳細については、「rdsadmin.drop_bufferpool」を参照してください。db2 "call rdsadmin.drop_bufferpool( '
database_name
', 'buffer_pool_name
')"
バッファプールのフラッシュ
RDS for Db2 がメモリからストレージにページを書き込むように、バッファプールをフラッシュしてチェックポイントを強制できます。
注記
バッファプールは、フラッシュする必要はありません。Db2 はトランザクションをコミットする前にログを同期的に書き込みます。ダーティページがまだバッファプールに存在している能性がありますが、Db2 はそれらを非同期的にストレージに書き込みます。システムが予期せずシャットダウンした場合でも、データベースを再起動すると、Db2 は自動的にクラッシュリカバリを実行します。クラッシュリカバリ中、Db2 はコミットされた変更をデータベースに書き込むか、コミットされていないトランザクションの変更をロールバックします。
バッファプールをフラッシュするには
-
RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、Db2 データベースに接続します。次の例で、
rds_database_alias
、master_username
、master_password
を自分の情報に置き換えます。db2 connect to
rds_database_alias
usermaster_username
usingmaster_password
-
バッファプールをフラッシュします。
db2 flush bufferpools all
ストレージの管理
Db2 は、自動ストレージを使用して、テーブル、インデックス、一時ファイルなどのデータベースオブジェクトの物理ストレージを管理します。自動ストレージを使用すると、ストレージ領域を手動で割り当て、使用されているストレージパスを追跡する代わりに、Db2 システムによって必要に応じてストレージパスが作成および管理されます。これにより、Db2 データベースの管理を簡素化し、人為的なミスによるエラーの可能性を減らすことができます。詳細については、IBM Db2 ドキュメントの「Automatic storage
RDS for Db2 では、論理ボリュームとファイルシステムの自動拡張により、ストレージサイズを動的に増やすことができます。詳細については、「Amazon RDS DB インスタンスのストレージを使用する」を参照してください。
テーブルスペースの管理
RDS for Db2 データベースのテーブルスペースを作成、変更、名前の変更、または削除できます。テーブルスペースを作成、変更、名前の変更、または削除するには、マスターユーザーが使用できない上位レベルの SYSADM
権限が必要です。代わりに、Amazon RDS ストアドプロシージャを使用します。
トピック
テーブルスペースの作成
RDS for Db2 データベースのテーブルスペースを作成するには、 rdsadmin.create_tablespace
ストアドプロシージャを呼び出します。詳細については、IBM Db2 ドキュメントの「CREATE TABLESPACE statement
重要
テーブルスペースを作成するには、テーブルスペースを関連付ける同じページサイズのバッファプールが既に存在している必要があります。詳細については、「バッファプールの管理」を参照してください。
テーブルスペースを作成するには
-
RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、
rdsadmin
データベースに接続します。次の例で、master_username
とmaster_password
を自分の情報に置き換えます。db2 "connect to rdsadmin user
master_username
usingmaster_password
" -
rdsadmin.create_tablespace
を呼び出してテーブルスペースを作成します。詳細については、「rdsadmin.create_tablespace」を参照してください。db2 "call rdsadmin.create_tablespace( '
database_name
', 'tablespace_name
', 'buffer_pool_name
',tablespace_initial_size
,tablespace_increase_size
, 'tablespace_type
')"
テーブルスペースの変更
RDS for Db2 データベースのテーブルスペースを変更するには、 rdsadmin.alter_tablespace
ストアドプロシージャを呼び出します。このストアドプロシージャを使用すると、テーブルスペースのバッファプールを変更したり、ハイウォーターマークを下げたり、テーブルスペースをオンラインにしたりできます。詳細については、IBM Db2 ドキュメントの「ALTER TABLESPACE statement
テーブルスペースを変更するには
-
RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、
rdsadmin
データベースに接続します。次の例で、master_username
とmaster_password
を自分の情報に置き換えます。db2 "connect to rdsadmin user
master_username
usingmaster_password
" -
rdsadmin.alter_tablespace
を呼び出してテーブルスペースを変更します。詳細については、「rdsadmin.alter_tablespace」を参照してください。db2 "call rdsadmin.alter_tablespace( '
database_name
', 'tablespace_name
', 'buffer_pool_name
',buffer_pool_size
,tablespace_increase_size
, 'max_size
', 'reduce_max
', 'reduce_stop
', 'reduce_value
', 'lower_high_water
', 'lower_high_water_stop
', 'switch_online
')"
テーブルスペースの名前変更
RDS for Db2 データベースのテーブルスペース名を変更するには、rdsadmin.rename_tablespace
ストアドプロシージャを呼び出します。
テーブルスペース名を変更するには
-
RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、
rdsadmin
データベースに接続します。次の例で、master_username
とmaster_password
を自分の情報に置き換えます。db2 "connect to rdsadmin user
master_username
usingmaster_password
" -
rdsadmin.rename_tablespace
を呼び出してテーブルスペース名を変更します。テーブルスペース名に関する制限などの詳細については、「rdsadmin.rename_tablespace」を参照してください。db2 "call rdsadmin.rename_tablespace( '
database_name
', 'source_tablespace_name
', 'target_tablespace_name
')"
テーブルスペースの削除
RDS for Db2 データベースのテーブルスペースを削除するには、 rdsadmin.drop_tablespace
ストアドプロシージャを呼び出します。テーブルスペースを削除する前に、まずテーブル、インデックス、ラージオブジェクト (LOB) などのテーブルスペース内のオブジェクトを削除します。詳細については、IBM Db2 ドキュメントの「Dropping table spaces
テーブルスペースを削除するには
-
RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、
rdsadmin
データベースに接続します。次の例で、master_username
とmaster_password
を自分の情報に置き換えます。db2 "connect to rdsadmin user
master_username
usingmaster_password
" -
rdsadmin.drop_tablespace
を呼び出してテーブルスペースを削除します。詳細については、「rdsadmin.drop_tablespace」を参照してください。db2 "call rdsadmin.drop_tablespace( '
database_name
', 'tablespace_name
')"
テーブルスペースのステータスの確認
cast
コマンドを使用して、テーブルスペースのステータスを確認できます。
テーブルスペースのステータスを確認するには
-
RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、Db2 データベースに接続します。次の例で、
rds_database_alias
、master_username
、master_password
を自分の情報に置き換えます。db2 connect to
rds_database_alias
usermaster_username
usingmaster_password
-
サマリー出力を返します。
概要出力の場合:
db2 "select cast(tbsp_id as smallint) as tbsp_id, cast(tbsp_name as varchar(35)) as tbsp_name, cast(tbsp_type as varchar(3)) as tbsp_type, cast(tbsp_state as varchar(10)) as state, cast(tbsp_content_type as varchar(8)) as contents from table(mon_get_tablespace(null,-1)) order by tbsp_id"
テーブルスペースに関する詳細情報を返す
テーブルスペースに関する詳細情報を返すには
-
RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、Db2 データベースに接続します。次の例で、
rds_database_alias
、master_username
、master_password
を自分の情報に置き換えます。db2 connect to
rds_database_alias
usermaster_username
usingmaster_password
-
1 人のメンバーまたはすべてのメンバーについて、データベース内のすべてのテーブルスペースに関する詳細を返します。
1 人のメンバーの場合:
db2 "select cast(member as smallint) as member, cast(tbsp_id as smallint) as tbsp_id, cast(tbsp_name as varchar(35)) as tbsp_name, cast(tbsp_type as varchar(3)) as tbsp_type, cast(tbsp_state as varchar(10)) as state, cast(tbsp_content_type as varchar(8)) as contents, cast(tbsp_total_pages as integer) as total_pages, cast(tbsp_used_pages as integer) as used_pages, cast(tbsp_free_pages as integer) as free_pages, cast(tbsp_page_top as integer) as page_hwm, cast(tbsp_page_size as integer) as page_sz, cast(tbsp_extent_size as smallint) as extent_sz, cast(tbsp_prefetch_size as smallint) as prefetch_sz, cast(tbsp_initial_size as integer) as initial_size, cast(tbsp_increase_size_percent as smallint) as increase_pct, cast(storage_group_name as varchar(12)) as stogroup from table(mon_get_tablespace(null,-1)) order by member, tbsp_id "
すべてのメンバーの場合:
db2 "select cast(member as smallint) as member cast(tbsp_id as smallint) as tbsp_id, cast(tbsp_name as varchar(35)) as tbsp_name, cast(tbsp_type as varchar(3)) as tbsp_type, cast(tbsp_state as varchar(10)) as state, cast(tbsp_content_type as varchar(8)) as contents, cast(tbsp_total_pages as integer) as total_pages, cast(tbsp_used_pages as integer) as used_pages, cast(tbsp_free_pages as integer) as free_pages, cast(tbsp_page_top as integer) as page_hwm, cast(tbsp_page_size as integer) as page_sz, cast(tbsp_extent_size as smallint) as extent_sz, cast(tbsp_prefetch_size as smallint) as prefetch_sz, cast(tbsp_initial_size as integer) as initial_size, cast(tbsp_increase_size_percent as smallint) as increase_pct, cast(storage_group_name as varchar(12)) as stogroup from table(mon_get_tablespace(null,-2)) order by member, tbsp_id "
テーブルスペースの状態とストレージグループの一覧表示
テーブルスペースの状態とストレージグループを一覧表示するには、次の SQL ステートメントを実行します。
db2 "SELECT varchar(tbsp_name, 30) as tbsp_name, varchar(TBSP_STATE, 30) state, tbsp_type, varchar(storage_group_name,30) storage_group FROM TABLE(MON_GET_TABLESPACE('',-2)) AS t"
テーブルのテーブルスペースの一覧表示
テーブルのテーブルスペースを一覧表示するには、次の SQL ステートメントを実行します。次の例では、SCHEMA_NAME
と TABLE_NAME
をスキーマとテーブルの名前に置き換えます。
db2 "SELECT VARCHAR(SD.TBSPACE,30) AS DATA_SPACE, VARCHAR(SL.TBSPACE,30) AS LONG_SPACE, VARCHAR(SI.TBSPACE,30) AS INDEX_SPACE FROM SYSCAT.DATAPARTITIONS P JOIN SYSCAT.TABLESPACES SD ON SD.TBSPACEID = P.TBSPACEID LEFT JOIN SYSCAT.TABLESPACES SL ON SL.TBSPACEID = P.LONG_TBSPACEID LEFT JOIN SYSCAT.TABLESPACES SI ON SI.TBSPACEID = P.INDEX_TBSPACEID WHERE TABSCHEMA = '
SCHEMA_NAME
' AND TABNAME = 'TABLE_NAME
'"
テーブルスペースのコンテナの一覧表示
テーブルスペースのテーブルスペースコンテナを一覧表示するには
-
RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、Db2 データベースに接続します。次の例では、
rds_database_alias
、master_username
、master_password
をユーザー自身の情報に置き換えます。db2 connect to
rds_database_alias
usermaster_username
usingmaster_password
-
データベース内のすべてのテーブルスペースコンテナまたは特定のテーブルスペースコンテナのリストを返します。
すべてのテーブルスペースコンテナの場合:
db2 "select cast(member as smallint) as member, cast(tbsp_name as varchar(35)) as tbsp_name, cast(container_id as smallint) as id, cast(container_name as varchar(60)) as container_path, container_type as type from table(mon_get_container(null,-2)) order by member,tbsp_id,container_id"
特定のテーブルスペースコンテナの場合:
db2 "select cast(member as smallint) as member, cast(tbsp_name as varchar(35)) as tbsp_name, cast(container_id as smallint) as id, cast(container_name as varchar(60)) as container_path, container_type as type from table(mon_get_container('TBSP_1',-2)) order by member, tbsp_id,container_id"
パフォーマンスレポートの生成
プロシージャまたはスクリプトを使用して、パフォーマンスレポートを生成できます。手順の使用方法については、 IBM Db2 ドキュメントの「DBSUMMARY procedure ‐ Generate a summary report of system and application performance metrics
Db2 では ~sqllib/sample/perf
ディレクトリに db2mon.sh
ファイルを含めます。スクリプトを実行すると、低コストで広範な SQL メトリクスレポートが生成されます。db2mon.sh
ファイルおよび関連するスクリプトファイルをダウンロードするには、IBM db2-samples GitHubリポジトリの perf
スクリプトを使用してパフォーマンスレポートを生成するには
-
RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、Db2 データベースに接続します。次の例で、
master_username
とmaster_password
を自分の情報に置き換えます。db2 connect to rdsadmin
master_username
usingmaster_password
-
rdsadmin.create_bufferpool
を呼び出して、ページサイズが 4096 のdb2monbp
という名前のバッファプールを作成します。詳細については、「rdsadmin.create_bufferpool」を参照してください。db2 "call rdsadmin.create_bufferpool('
database_name
','db2monbp',4096)" -
rdsadmin.create_tablespace
を呼び出して、db2monbp
バッファプールを使用するdb2montmptbsp
という名前の一時テーブルスペースを作成します。詳細については、「rdsadmin.create_tablespace」を参照してください。db2 "call rdsadmin.create_tablespace('database_name',\ 'db2montmptbsp','db2monbp',4096,1000,100,'T')"
-
db2mon.sh
スクリプトを開き、データベースへの接続に関する行を変更します。-
次の行を削除します。
db2 -v connect to $dbName
-
前のステップの行を次の行に置き換えます。次の例では、
master_username
とmaster_password
を RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードに置き換えます。db2 -v connect to $dbName user
master_username
usingmaster_password
-
-
スクリプトがあるディレクトリに変更します。次の例では、
directory
を、スクリプトが配置されているディレクトリの名前に置き換えます。cd
directory
-
db2mon.sh
スクリプトを実行して、指定した間隔でレポートを出力します。次の例では、rds_database_alias
とseconds
をデータベースの名前とレポート生成間の秒数 (0~3600) に置き換えます。./db2mon.sh
rds_database_alias
seconds
| tee -a db2mon.out
データベースに関する情報の収集
データベースに関する情報を収集するには、Amazon RDS ストアドプロシージャを使用できます。この情報は、データベースのモニタリングや問題のトラブルシューティングに役立ちます。
データベースに関する情報を収集するには
-
RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、
rdsadmin
データベースに接続します。次の例で、master_username
とmaster_password
を自分の情報に置き換えます。db2 "connect to rdsadmin user
master_username
usingmaster_password
" -
rdsadmin.db2pd
を呼び出して情報を収集します。詳細については、「rdsadmin.db2pd_command」を参照してください。db2 "call rdsadmin.db2pd_command('
db2pd_cmd
')"
データベースからのアプリケーションの強制削除
Amazon RDS ストアドプロシージャを使用すると、RDS for Db2 データベースからアプリケーションを強制的に削除し、データベースのメンテナンスを行うことができます。
データベースからアプリケーションを強制的に削除するには
-
RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、
rdsadmin
データベースに接続します。次の例で、master_username
とmaster_password
を自分の情報に置き換えます。db2 "connect to rdsadmin user
master_username
usingmaster_password
" -
rdsadmin.force_application
を呼び出して、アプリケーションをデータベースから強制的に削除します。詳細については、「rdsadmin.force_application」を参照してください。db2 "call rdsadmin.force_application( ?, '
applications
')"