

# テーブルスペースの一般的なタスク
<a name="db2-managing-tablespaces"></a>

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

**Topics**
+ [テーブルスペースの作成](#db2-creating-tablespace)
+ [テーブルスペースの変更](#db2-altering-tablespace)
+ [テーブルスペースの名前変更](#db2-renaming-tablespace)
+ [テーブルスペースの削除](#db2-dropping-tablespace)
+ [テーブルスペースのステータスの確認](#db2-checking-tablespaces-procedure)
+ [テーブルスペースに関する詳細情報を返す](#db2-tablespaces-info-db2pd)
+ [テーブルスペースの状態とストレージグループの一覧表示](#db2-state-storage-group-tablespace-sql)
+ [テーブルのテーブルスペースの一覧表示](#db2-return-tablespaces-sql)
+ [テーブルスペースのコンテナの一覧表示](#db2-listing-tablespace-containers)

## テーブルスペースの作成
<a name="db2-creating-tablespace"></a>

RDS for Db2 データベースのテーブルスペースを作成するには、 `rdsadmin.create_tablespace` ストアドプロシージャを呼び出します。詳細については、IBM Db2 ドキュメントの「[CREATE TABLESPACE statement](https://www.ibm.com/docs/en/db2/11.5?topic=statements-create-tablespace)」を参照してください。

**重要**  
テーブルスペースを作成するには、テーブルスペースを関連付ける同じページサイズのバッファプールが既に存在している必要があります。詳細については、「[バッファプールの一般的なタスク](db2-managing-buffer-pools.md)」を参照してください。

**テーブルスペースを作成するには**

1. RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、`rdsadmin` データベースに接続します。次の例で、*master\$1username* と *master\$1password* を自分の情報に置き換えます。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. `rdsadmin.create_tablespace` を呼び出してテーブルスペースを作成します。詳細については、「[rdsadmin.create\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-create-tablespace)」を参照してください。

   ```
   db2 "call rdsadmin.create_tablespace(
       'database_name', 
       'tablespace_name',
       'buffer_pool_name', 
       tablespace_initial_size, 
       tablespace_increase_size, 
       'tablespace_type')"
   ```

## テーブルスペースの変更
<a name="db2-altering-tablespace"></a>

RDS for Db2 データベースのテーブルスペースを変更するには、 `rdsadmin.alter_tablespace` ストアドプロシージャを呼び出します。このストアドプロシージャを使用すると、テーブルスペースのバッファプールを変更したり、ハイウォーターマークを下げたり、テーブルスペースをオンラインにしたりできます。詳細については、IBM Db2 ドキュメントの「[ALTER TABLESPACE statement](https://www.ibm.com/docs/en/db2/11.5?topic=statements-alter-tablespace)」を参照してください。

**テーブルスペースを変更するには**

1. RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、`rdsadmin` データベースに接続します。次の例で、*master\$1username* と *master\$1password* を自分の情報に置き換えます。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. `rdsadmin.alter_tablespace` を呼び出してテーブルスペースを変更します。詳細については、「[rdsadmin.alter\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-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')"
   ```

## テーブルスペースの名前変更
<a name="db2-renaming-tablespace"></a>

RDS for Db2 データベースのテーブルスペース名を変更するには、`rdsadmin.rename_tablespace` ストアドプロシージャを呼び出します。詳細については、IBM Db2 ドキュメントの「[RENAME TABLESPACE statement](https://www.ibm.com/docs/en/db2/11.5?topic=statements-rename-tablespace)」を参照してください。

**テーブルスペース名を変更するには**

1. RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、`rdsadmin` データベースに接続します。次の例で、*master\$1username* と *master\$1password* を自分の情報に置き換えます。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. `rdsadmin.rename_tablespace` を呼び出してテーブルスペース名を変更します。テーブルスペース名に関する制限などの詳細については、「[rdsadmin.rename\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-rename-tablespace)」を参照してください。

   ```
   db2 "call rdsadmin.rename_tablespace(
       'database_name', 
       'source_tablespace_name',
       'target_tablespace_name')"
   ```

## テーブルスペースの削除
<a name="db2-dropping-tablespace"></a>

RDS for Db2 データベースのテーブルスペースを削除するには、 `rdsadmin.drop_tablespace` ストアドプロシージャを呼び出します。テーブルスペースを削除する前に、まずテーブル、インデックス、ラージオブジェクト (LOB) などのテーブルスペース内のオブジェクトを削除します。詳細については、IBM Db2 ドキュメントの「[Dropping table spaces](https://www.ibm.com/docs/en/db2/11.5?topic=spaces-dropping-table)」を参照してください。

**テーブルスペースを削除するには**

1. RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、`rdsadmin` データベースに接続します。次の例で、*master\$1username* と *master\$1password* を自分の情報に置き換えます。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. `rdsadmin.drop_tablespace` を呼び出してテーブルスペースを削除します。詳細については、「[rdsadmin.drop\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-drop-tablespace)」を参照してください。

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

## テーブルスペースのステータスの確認
<a name="db2-checking-tablespaces-procedure"></a>

 `cast` 関数を使用して、テーブルスペースのステータスを確認できます。

**テーブルスペースのステータスを確認するには**

1. RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、Db2 データベースに接続します。次の例で、*rds\$1database\$1alias*、*master\$1username*、*master\$1password* を自分の情報に置き換えます。

   ```
   db2 connect to rds_database_alias user master_username using master_password
   ```

1. サマリー出力を返します。

   概要出力の場合:

   ```
   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"
   ```

## テーブルスペースに関する詳細情報を返す
<a name="db2-tablespaces-info-db2pd"></a>

`cast` 関数を使用して、1 人またはすべてのメンバーのテーブルスペースに関する情報を返すことができます。

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

1. RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、Db2 データベースに接続します。次の例で、*rds\$1database\$1alias*、*master\$1username*、*master\$1password* を自分の情報に置き換えます。

   ```
   db2 connect to rds_database_alias user master_username using master_password
   ```

1. 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 "
   ```

## テーブルスペースの状態とストレージグループの一覧表示
<a name="db2-state-storage-group-tablespace-sql"></a>

SQL ステートメントを実行することで、テーブルスペースの状態とストレージグループを一覧表示できます。

テーブルスペースの状態とストレージグループを一覧表示するには、次の 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"
```

## テーブルのテーブルスペースの一覧表示
<a name="db2-return-tablespaces-sql"></a>

SQL ステートメントを実行して、テーブルのテーブルスペースを一覧表示できます。

テーブルのテーブルスペースを一覧表示するには、次の SQL ステートメントを実行します。次の例では、*SCHEMA\$1NAME* と *TABLE\$1NAME* をスキーマとテーブルの名前に置き換えます。

```
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'"
```

## テーブルスペースのコンテナの一覧表示
<a name="db2-listing-tablespace-containers"></a>

`cast` コマンドを使用して、すべてのテーブルスペースコンテナまたは特定のテーブルスペースコンテナを一覧表示できます。

**テーブルスペースのテーブルスペースコンテナを一覧表示するには**

1. RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、Db2 データベースに接続します。次の例では、*rds\$1database\$1alias*、*master\$1username*、*master\$1password* をユーザー自身の情報に置き換えます。

   ```
   db2 connect to rds_database_alias user master_username using master_password
   ```

1. データベース内のすべてのテーブルスペースコンテナまたは特定のテーブルスペースコンテナのリストを返します。

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

   ```
   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"
   ```