테이블스페이스의 일반적인 작업 - Amazon Relational Database Service

테이블스페이스의 일반적인 작업

RDS for Db2 데이터베이스의 테이블스페이스를 생성, 변경, 삭제 또는 이름을 변경할 수 있습니다. 테이블스페이스를 생성, 변경, 삭제 또는 이름을 변경하려면 마스터 사용자가 사용할 수 없는 더 높은 수준의 SYSADM 권한이 필요합니다. 대신 Amazon RDS 저장 프로시저를 사용하세요.

테이블스페이스 생성

RDS for Db2 데이터베이스용 테이블스페이스를 만들려면 rdsadmin.create_tablespace 저장 프로시저를 호출합니다. 자세한 내용은 IBM Db2 설명서의 CREATE TABLESPACE 문을 참조하세요.

중요

테이블스페이스를 만들려면 테이블스페이스와 연결할 페이지 크기가 같은 버퍼 풀이 있어야 합니다. 자세한 내용은 버퍼 풀의 일반적인 작업 단원을 참조하십시오.

테이블스페이스를 생성하려면
  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 문을 참조하세요.

테이블스페이스를 변경하려면
  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 저장 프로시저를 호출합니다. 자세한 내용은 IBM Db2 설명서의 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 설명서의 테이블스페이스 삭제를 참조하세요.

테이블스페이스를 삭제하려면
  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_alias, master_username, master_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"

테이블스페이스에 관한 세부 정보 반환

cast 함수를 사용하여 한 구성원 또는 모든 구성원의 테이블스페이스 정보를 반환할 수 있습니다.

테이블스페이스에 관한 세부 정보를 반환하려면
  1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 Db2 데이터베이스에 연결합니다. 다음 예제에서 rds_database_alias, master_username, master_password를 사용자 자체 정보로 바꿉니다.

    db2 connect to rds_database_alias user master_username using master_password
  2. 한 멤버 또는 모든 멤버의 데이터베이스에 있는 모든 테이블스페이스에 대한 세부 정보를 반환합니다.

    한 멤버의 경우에는 다음과 같습니다.

    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 문을 실행하여 테이블스페이스의 상태 및 스토리지 그룹을 나열할 수 있습니다.

테이블스페이스의 상태 및 스토리지 그룹을 나열하려면 다음 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 문을 실행하여 표의 테이블스페이스를 나열할 수 있습니다.

표의 테이블스페이스를 나열하려면 다음 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'"

테이블스페이스 컨테이너 나열

cast 명령을 사용하여 모든 테이블스페이스 컨테이너 또는 특정 테이블스페이스 컨테이너를 나열할 수 있습니다.

테이블스페이스의 테이블스페이스 컨테이너를 나열하려면
  1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 Db2 데이터베이스에 연결합니다. 다음 예제에서 rds_database_alias, master_username, master_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"