

# 테이블스페이스의 일반적인 작업
<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 문](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 문](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 문](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 설명서의 [테이블스페이스 삭제](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. 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_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"
   ```