본문 바로가기

Oracle 테이블스페이스(TableSpace) 개념 정리

by 애덤더미 2014. 9. 26.
반응형

1. 테이블스페이스란?

테이블스페이스는 테이블이 저장되는 물리적인 공간을 의미합니다. 오라클에서는 테이블을 생성하기 전에 데이터를 저장할 테이블스페이스를 먼저 만들어야 합니다. 이렇게 테이블스페이스를 나누어 관리하면, 성능 향상관리의 효율성을 얻을 수 있습니다.

테이블스페이스는 미리 정의된 용량만큼 공간을 확보하며, 생성된 테이블스페이스에 데이터가 저장됩니다. 예를 들어, 게시판 테이블의 데이터를 100MB 용량의 테이블스페이스에 저장하고, 용량이 초과될 경우 자동으로 10MB씩 확장되도록 설정할 수 있습니다.


2. 테이블스페이스 생성 및 관리

테이블스페이스 생성 과정

  1. SYS 계정으로 접속하여 테이블스페이스를 생성합니다.
  2. SCOTT2 유저를 생성하고, 기본 테이블스페이스로 Mytablespace를 설정합니다.
  3. SCOTT 계정의 emp 테이블을 SCOTT2 계정으로 복사할 수 있습니다.
CREATE TABLE scott2.emp TABLESPACE mytablespace AS SELECT * FROM scott.emp;

3. 테이블스페이스의 특성

  • 데이터를 삭제하고 커밋(Commit) 하더라도 테이블스페이스의 사용량은 변하지 않습니다.
  • 테이블이 줄어들어도, 자동으로 테이블스페이스의 크기가 줄어들지 않으며 수동으로 조정해야 합니다. 한 번 늘어난 공간은 자동으로 줄어들지 않기 때문에, 필요한 경우 수동으로 크기를 관리해야 합니다.

4. 테이블스페이스 조회 및 관리

현재 테이블스페이스 조회

  • SYSTEM 계정으로 로그인 후, 다음 쿼리로 테이블스페이스 정보를 확인할 수 있습니다:
SELECT * FROM dba_tablespaces;
  • 현재 사용자 계정에서 테이블스페이스 이름을 조회할 때는:
SELECT DISTINCT tablespace_name FROM user_tables;

테이블스페이스에 포함된 테이블 조회

SELECT TABLESPACE_NAME, TABLE_NAME FROM USER_TABLES WHERE TABLESPACE_NAME = '테이블스페이스명';

데이터 파일 정보 확인

SELECT file_name, tablespace_name, bytes, status FROM DBA_DATA_FILES;
  • file_name: 데이터 파일의 물리적 위치와 파일명
  • tablespace_name: 테이블스페이스 이름
  • bytes: 테이블스페이스 크기
  • status: 사용 가능 여부

테이블스페이스별 사용 가능한 공간 조회

SELECT tablespace_name, SUM(bytes), MAX(bytes) FROM DBA_FREE_SPACE GROUP BY tablespace_name;
  • SUM: 테이블스페이스 내 분산된 여유 공간의 총합
  • MAX: 가장 큰 여유 공간의 크기

5. 테이블스페이스 생성 예시

CREATE TABLESPACE storm
DATAFILE 'C:\ORACLE\ORADATA\app_data.dbf' SIZE 100M
DEFAULT STORAGE (
  INITIAL 10K
  NEXT 10K
  MINEXTENTS 2
  MAXEXTENTS 50
  PCTINCREASE 50
);
  • 이때, autoextend on next 10m maxsize 500m 옵션을 추가하면, 용량이 다 찰 때 자동으로 10MB씩 확장됩니다.

6. 테이블스페이스 크기 수정

ALTER DATABASE DATAFILE '데이터파일경로' AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;

또는

ALTER TABLESPACE 테이블스페이스명 ADD DATAFILE '추가할 데이터파일명' SIZE 1024M;

 


7. 테이블스페이스의 기본 동작

  • 테이블스페이스를 별도로 설정하지 않으면, 기본 테이블스페이스에 데이터가 저장됩니다.
  • 테이블을 생성할 때, 해당 테이블은 스키마의 기본 테이블스페이스에 생성되며, 이 테이블스페이스의 최대 용량까지 데이터를 저장할 수 있습니다.

8. 테이블스페이스 확인 및 관리

  • 테이블 정보는 all_tables, user_tables, dba_tables에서 조회할 수 있습니다.
  • 테이블스페이스를 설정하여 데이터를 효율적으로 관리하는 것이 중요하며, 각 계정별로 기본 테이블스페이스를 지정하여 사용할 수 있습니다.
반응형