Amazon RDS for Db2 DB インスタンスの一般的なデータベースタスクの実行 - Amazon Relational Database Service

Amazon RDS for Db2 DB インスタンスの一般的なデータベースタスクの実行

Amazon RDS for Db2 DB インスタンスのデータベースに関連する特定の一般的な DBA タスクを実行することができます。マネージドサービスエクスペリエンスを提供するうえで、Amazon RDS は DB インスタンスへのシェルアクセスを提供していません。また、マスターユーザーは、SYSADMSYSMAINT、または SYSCTRL 権限を必要とするコマンドやユーティリティを実行できません。

バッファプールの管理

RDS for Db2 データベースのバッファプールを作成、変更、または削除できます。バッファプールを作成、変更、または削除するには、マスターユーザーが使用できない上位レベルの SYSADMIN 権限が必要です。代わりに、Amazon RDS ストアドプロシージャを使用します。

バッファプールは、フラッシュすることもできます。

バッファプールの作成

RDS for Db2 データベースのバッファプールを作成するには、 rdsadmin.create_bufferpool ストアドプロシージャを呼び出します。詳細については、IBM Db2 ドキュメントの「CREATE BUFFERPOOL statement」を参照してください。

バッファプールを作成するには
  1. RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、rdsadmin データベースに接続します。次の例で、master_usernamemaster_password を自分の情報に置き換えます。

    db2 "connect to rdsadmin user master_user using master_password"
  2. 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」を参照してください。

バッファプールを変更するには
  1. RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、rdsadmin データベースに接続します。次の例で、master_usernamemaster_password を自分の情報に置き換えます。

    db2 "connect to rdsadmin user master_username using master_password"
  2. 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」を参照してください。

重要

削除するバッファプールにテーブルスペースが割り当てられていないことを確認します。

バッファプールを削除するには
  1. RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、rdsadmin データベースに接続します。次の例で、master_usernamemaster_password を自分の情報に置き換えます。

    db2 "connect to rdsadmin user master_user using master_password"
  2. rdsadmin.drop_bufferpool を呼び出してバッファプールを削除します。詳細については、「rdsadmin.drop_bufferpool」を参照してください。

    db2 "call rdsadmin.drop_bufferpool( 'database_name', 'buffer_pool_name')"

バッファプールのフラッシュ

RDS for Db2 がメモリからストレージにページを書き込むように、バッファプールをフラッシュしてチェックポイントを強制できます。

注記

バッファプールは、フラッシュする必要はありません。Db2 はトランザクションをコミットする前にログを同期的に書き込みます。ダーティページがまだバッファプールに存在している能性がありますが、Db2 はそれらを非同期的にストレージに書き込みます。システムが予期せずシャットダウンした場合でも、データベースを再起動すると、Db2 は自動的にクラッシュリカバリを実行します。クラッシュリカバリ中、Db2 はコミットされた変更をデータベースに書き込むか、コミットされていないトランザクションの変更をロールバックします。

バッファプールをフラッシュするには
  1. RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、Db2 データベースに接続します。次の例で、rds_database_aliasmaster_usernamemaster_password を自分の情報に置き換えます。

    db2 connect to rds_database_alias user master_username using master_password
  2. バッファプールをフラッシュします。

    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」を参照してください。

重要

テーブルスペースを作成するには、テーブルスペースを関連付ける同じページサイズのバッファプールが既に存在している必要があります。詳細については、「バッファプールの管理」を参照してください。

テーブルスペースを作成するには
  1. RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、rdsadmin データベースに接続します。次の例で、master_usernamemaster_password を自分の情報に置き換えます。

    db2 "connect to rdsadmin user master_username using master_password"
  2. 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」を参照してください。

テーブルスペースを変更するには
  1. RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、rdsadmin データベースに接続します。次の例で、master_usernamemaster_password を自分の情報に置き換えます。

    db2 "connect to rdsadmin user master_username using master_password"
  2. 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 ストアドプロシージャを呼び出します。

テーブルスペース名を変更するには
  1. RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、rdsadmin データベースに接続します。次の例で、master_usernamemaster_password を自分の情報に置き換えます。

    db2 "connect to rdsadmin user master_username using master_password"
  2. 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」を参照してください。

テーブルスペースを削除するには
  1. RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、rdsadmin データベースに接続します。次の例で、master_usernamemaster_password を自分の情報に置き換えます。

    db2 "connect to rdsadmin user master_username using master_password"
  2. rdsadmin.drop_tablespace を呼び出してテーブルスペースを削除します。詳細については、「rdsadmin.drop_tablespace」を参照してください。

    db2 "call rdsadmin.drop_tablespace( 'database_name', 'tablespace_name')"

テーブルスペースのステータスの確認

cast コマンドを使用して、テーブルスペースのステータスを確認できます。

テーブルスペースのステータスを確認するには
  1. RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、Db2 データベースに接続します。次の例で、rds_database_aliasmaster_usernamemaster_password を自分の情報に置き換えます。

    db2 connect to rds_database_alias user master_username using master_password
  2. サマリー出力を返します。

    概要出力の場合:

    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"

テーブルスペースに関する詳細情報を返す

テーブルスペースに関する詳細情報を返すには
  1. RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、Db2 データベースに接続します。次の例で、rds_database_aliasmaster_usernamemaster_password を自分の情報に置き換えます。

    db2 connect to rds_database_alias user master_username using master_password
  2. 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_NAMETABLE_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'"

テーブルスペースのコンテナの一覧表示

テーブルスペースのテーブルスペースコンテナを一覧表示するには
  1. RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、Db2 データベースに接続します。次の例では、rds_database_aliasmaster_usernamemaster_password をユーザー自身の情報に置き換えます。

    db2 connect to rds_database_alias user master_username using master_password
  2. データベース内のすべてのテーブルスペースコンテナまたは特定のテーブルスペースコンテナのリストを返します。

    すべてのテーブルスペースコンテナの場合:

    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 ディレクトリを参照してください。

スクリプトを使用してパフォーマンスレポートを生成するには
  1. RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、Db2 データベースに接続します。次の例で、master_usernamemaster_password を自分の情報に置き換えます。

    db2 connect to rdsadmin user master_username using master_password
  2. rdsadmin.create_bufferpool を呼び出して、ページサイズが 4096 の db2monbp という名前のバッファプールを作成します。詳細については、「rdsadmin.create_bufferpool」を参照してください。

    db2 "call rdsadmin.create_bufferpool('database_name','db2monbp',4096)"
  3. rdsadmin.create_tablespace を呼び出して、db2monbp バッファプールを使用する db2montmptbsp という名前の一時テーブルスペースを作成します。詳細については、「rdsadmin.create_tablespace」を参照してください。

    db2 "call rdsadmin.create_tablespace('database_name',\ 'db2montmptbsp','db2monbp',4096,1000,100,'T')"
  4. db2mon.sh スクリプトを開き、データベースへの接続に関する行を変更します。

    1. 次の行を削除します。

      db2 -v connect to $dbName
    2. 前のステップの行を次の行に置き換えます。次の例では、master_usernamemaster_password を RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードに置き換えます。

      db2 -v connect to $dbName user master_username using master_password
  5. スクリプトがあるディレクトリに変更します。次の例では、directory を、スクリプトが配置されているディレクトリの名前に置き換えます。

    cd directory
  6. db2mon.sh スクリプトを実行して、指定した間隔でレポートを出力します。次の例では、rds_database_aliasseconds をデータベースの名前とレポート生成間の秒数 (0~3600) に置き換えます。

    ./db2mon.sh rds_database_alias seconds | tee -a db2mon.out

データベースに関する情報の収集

データベースに関する情報を収集するには、Amazon RDS ストアドプロシージャを使用できます。この情報は、データベースのモニタリングや問題のトラブルシューティングに役立ちます。

データベースに関する情報を収集するには
  1. RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、rdsadmin データベースに接続します。次の例で、master_usernamemaster_password を自分の情報に置き換えます。

    db2 "connect to rdsadmin user master_username using master_password"
  2. rdsadmin.db2pd を呼び出して情報を収集します。詳細については、「rdsadmin.db2pd_command」を参照してください。

    db2 "call rdsadmin.db2pd_command('db2pd_cmd')"

データベースからのアプリケーションの強制削除

Amazon RDS ストアドプロシージャを使用すると、RDS for Db2 データベースからアプリケーションを強制的に削除し、データベースのメンテナンスを行うことができます。

データベースからアプリケーションを強制的に削除するには
  1. RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、rdsadmin データベースに接続します。次の例で、master_usernamemaster_password を自分の情報に置き換えます。

    db2 "connect to rdsadmin user master_username using master_password"
  2. rdsadmin.force_application を呼び出して、アプリケーションをデータベースから強制的に削除します。詳細については、「rdsadmin.force_application」を参照してください。

    db2 "call rdsadmin.force_application( ?, 'applications')"