본문 바로가기
정보관리(데이터베이스, DB)/DB

Tablespace 구성방안(DATA / INDEX TABLESPACE 분리 구성)

by 3604 2025. 8. 30.
728x90

Oracle DATA, INDEX TABLESPACE 데이터, 인덱스 테이블스페이스 분리 구성





요즘 TABLESPACE 를 DATA 영역과 INDEX 를 분리하는 곳이 많다.

아래 가이드를 참고하여, 많은 분들의 도움이 되시면 좋을 것 같습니다.



두 가지 방안으로 Tablespace 를 구성할수 있으며, 방식은 동일하다.



1) sys 권한을 가진 계정을 이용한 Tablespace 생성 후 user 계정을 생성하여 설정

2) Tablespace 를 생성하여, 기존에 생성된 user 계정에게 설정



1. Tablespace (테이블스페이스) 생성

oracle@MIN ~]# sqalplus / as sysdba

or

oracle@MIN ~]# sqlplus "/as sysdba"

○ UMF 방식 (User Managed File) 으로 진행하였으며, OMF 방식으로도 구성 가능

- DATA TABLESPACE 생성

SQL> CREATE TABLESPACE 테이블스페이스명        --> 테이블 스페이스 생성

DATAFILE '/경로/데이터파일명.dbf' SIZE 1G           --> 데이터파일 경로 및 사이즈 설정

AUTOEXTEND ON NEXT 100M;                           --> Autoextend 설정 ( 회사 별로 설정 상이)



ex) create tablespace TS_min_DATA datafile '/oradata/MINDB/TS_min_DATA_datafile_01.dbf' size 10G autoextend on next 100M;



-> Tablespace TS_min_DATA 생성

-> Tablespace datafile 경로 : /oradata/MINDB/TS_min_DATA_datafile_01.dbf

-> datafile size : 10 GB (10GB 로 초기 생성 / 100M , 1G 등 사용자에 맞게 생성한다.)

-> autoextend : 초기값 10GB 사용 이후 100M 씩 자동으로 tablespace용량 증가



- INDEX TABLESPACE 생성

SQL> CREATE TABLESPACE 테이블스페이스명       --> 테이블 스페이스 생성

DATAFILE '/경로/데이터파일명.dbf' SIZE 1G          --> 데이터파일 경로 및 사이즈 설정

AUTOEXTEND ON NEXT 100M;                          --> Autoextend 설정 ( 회사 별로 설정 상이)



ex) create tablespace TS_min_INDEX datafile '/oradata/MINDB/TS_min_INDEX_datafile_01.dbf' size 10G autoextend on next 100M;



-> Tablespace TS_min_INDEX 생성

-> Tablespace datafile 경로 : /oradata/MINDB/TS_min_INDEX_datafile_01.dbf

-> datafile size : 10 GB (10GB 로 초기 생성 / 100M , 1G 등 사용자에 맞게 생성한다.)

-> autoextend : 초기값 10GB 사용 이후 100M 씩 자동으로 tablespace용량 증가



2. 계정에 생성 및 TABLESPACE 할당

SQL> CREATE USER 유저명 IDENTIFIED BY 패스워드 

          DEFAULT TABLESPACE 테이블 스페이스명

          QUOTA UNLIMITED ON 데이터 테이블 스페이스명     -->  테이블스페이스 사용 용량 설정

          QUOTA UNLIMITED ON 인덱스 테이블 스페이스명;    -->  테이블스페이스 사용 용량 설정



ex) create user min identified by 1 default

       tablespace TS_min_DATA

       quota unlimited on TS_min_DATA

       quota unlimited on TS_min_INDEX

       ;



-> min 유저 패스워드 1로 생성하며, default tablespace 를 TS_min_DATA 로 설정

-> min 계정은 TS_min_DATA / TS_min_INDEX TABLESPACE 에 대해 용량 제한없이 사용가능하도록 설정

해당 설정이 완료 된 후 min 계정은 연결된 테이블스페이스 2개를 사용할수 있으며,

DATA / INDEX 구성시 두개의 TABLESPACE 를 사용하도록 구성하면 된다.



이후 추가적인 권한이 필요할 수 있으므로, 각 업무에 정책에 따라 부여하면 됩니다.



ex) GRANT RESOURCE, CONNECT, DBA TO USER명



3, 기존 생성된 계정에 TABLESPACE 할당

SQL> ALTER USER 유저명 DEFAULT TABLESPACE 테이블 스페이스명;           --> 테이블 스페이스 할당

          QUOTA UNLIMITED ON 데이터 테이블 스페이스명                      -->  테이블스페이스 사용 용량 설정

          QUOTA UNLIMITED ON 인덱스 테이블 스페이스명;                     -->  테이블스페이스 사용 용량 설정



ex) alter user min default tablespace TS_min_DATA

       quota unlimited on TS_min_DATA

       quota unlimited on TS_min_INDEX

       ;



-> user min 계정에게 default tablespace TS_min_DATA 설정

-> in 계정은 TS_min_DATA / TS_min_INDEX TABLESPACE 에 대해 용량 제한없이 사용가능하도록 설정





별첨) USER의 TABLESPACE 구성 확인 쿼리

4. Default Tablespace 확인

- user 계정으로 조회

SQL> sqlpus / as sysdba

SQL> conn min

password : 1

SQL> select * from user_users;



별첨1) Default Tablespace 설정 전


기본 계정 생성시 Default Tablespace 는 USERS 로 설정된다



별첨2) Default Tablespace 설정 후


Default Tablespace 설정 후

출처: https://holics1226.tistory.com/14


[참고] 테이블스페이스 지정 방법

테이블을 생성할 때 데이터가 저장될 테이블스페이스를 지정하고, 인덱스를 생성할 때 인덱스가 저장될 테이블스페이스를 지정하는 방식으로 구성됩니다.
예를 들어, Oracle 기준으로는 다음과 같이 사용합니다:
 
-- 테이블 생성 시 데이터 테이블스페이스 지정
CREATE TABLE my_table (
    id NUMBER,
    name VARCHAR2(50)
) TABLESPACE data_ts;

-- 인덱스 생성 시 인덱스 테이블스페이스 지정
CREATE INDEX idx_my_table_id ON my_table(id) TABLESPACE index_ts;
요약하자면, 데이터와 인덱스 테이블스페이스는 별도의 연결 명령어 없이, 각 객체(테이블, 인덱스) 생성 시 지정한 테이블스페이스에 저장되는 방식으로 연결됩니다.
728x90