09
05

TableSpace

  • 데이터를 어딘가 저장해놓고 사용하는 시스템
  • 데이터 저장 단위 중 가장 상위에 있는 단위
  • 논리적 단위 : 데이터 블록 → 익스텐트 → 세그먼트 → 테이블스페이스
  • 데이터 블록 여러 개가 모여 익스텐트 하나를 만들고, 익스텐트 여러 개가 모여 하나의 세그먼트를 구성

TableSpace 생성

create tablespace [테이블 스페이스명]
datafile 'D:\dev\oradata' -- 파일경로
size 10M -- 초기 데이터 크기 설정
autoextend on next 10M -- 초기 크기 공간을 모두 사용하는 경우 자동으로 파일의 크기가 커지는 기능
maxsize 100M -- 데이터파일이 최대로 커질 수 있는 크기 지정 기본값 = unlimited
uniform size 1M -- EXTENT 한개의 크기를 설정

 

전체 TableSpace 조회

select * from dba_tablespaces;

 

전체 TableSpace 경로 및 용량

SELECT A.TABLESPACE_NAME "테이블스페이스명"
       A.FILE_NAME "파일경로",
       (A.BYTES - B.FREE) "사용공간",
       B.FREE "여유공간",
       A.BYTES "총크기",
       TO_CHAR((B.FREE/A.BYTES * 100),'999.99')||'%' "여유공간"
  FROM (
         SELECT FILE_ID,
                TABLESPACE NAME,
                FILE_NAME,
                SUBSTR(FILE_NAME,1,200) FILE_NM,
                SUM(BYTES) BYTES
           FROM DBA_DATA_FILES
       GROUP BY FILE_ID, TABLESPACE_NAME, FILE_NAME, SUBSTR(FILE_NAME,1,200)
       ) A,
       (
         SELECT TABLESPACE_NAME,
                FILE_ID,
                SUM(NVL(BYTES,0)) FREE
           FROM DBA_FREE_SPACE
       GROUP BY TABLESPACE_NAME,FILE_ID
       ) B
 WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME
   AND A.FILE_ID = B.FILE_ID;

 

테이블의 TableSpace 변경

alter table [테이블명] move tablespace [테이블 스페이스명]

 

TableSpace 속성 변경

-- 해당 테이블스페이스의 물리적인 파일의 이름 또는 위치변경
alter tablespace rename [A] to [B];

-- 해당 테이블 스페이스의 용량을 1024메가로 변경
alter tablespace [테이블스페이스명] add datafile [추가할데이터파일명] size 1024M;

-- 해당 데이터파일경로에 해당하는 테이블스페이스의 크기가 FULL이 되면 자동으로 100메가씩 증가
alter database datafile [데이터파일경로] autoextend on next 100m maxsize unlmited;

 

TableSpace 삭제

-- 테이블스페이스 내의 객체(테이블, 인덱스 등)를 전체 삭제
drop tablespace [테이블 스페이스명] include contents;

-- 테이블스페이스의 모든 세그먼트를 삭제(데이터가 있는 테이블 스페이스 제외)
drop tablespace [테이블 스페이스명] including contents;

-- 삭제된 테이블스페이스를 참조하는 다른 테이블스페이스 테이블로부터 참조무결성 제약조건을 삭제
drop tablespace [테이블 스페이스명] cascade constraints;

-- 테이블 스페이스의 물리적파일까지 삭제
dropo tablespace [테이블 스페이스명] including contents and datafiles;

 

TableSpace 작동방식

오라클에서는 테이블스페이스라 불리는 테이블이 저장될 공간을 먼저 만들고 난 뒤 테이블을 생성한다. 테이블이 실질적으로 저장되는 장소라고 생각하면 된다. 이러한 작동방식은 각각의 테이블을 테이블스페이스 별로 나누어 관리하므로 퍼포먼스의 향상을 가져온다. 테이블스페이스를 생성하면 정의된 용량만큼 미리 확보한 테이블스페이스가 생성되고 생성된 테이블스페이스에 테이블의 데이터가 저장된다. 이렇게 설정된 테이블스페이스에 용량이 가득 차면 오라클 서버가 죽는다. 그러므로 관리를 잘해주어야 한다. 하지만 테이블스페이스마다 용량을 너무나 크게 잡아버리면 실질적으로 저장된 용량이 적더라도 가변적으로 max 용량이 줄지 않는다. 그러므로 용량 낭비로 이어질 수 있다.

테이블스페이스는 자동으로 할당해주는 부분이 많아 DBA가 아니면 건드릴 일이 거의 없다.

'스마트팩토리 > 오라클' 카테고리의 다른 글

프로시저(PROCEDURE)  (0) 2020.09.15
계정과 스키마  (0) 2020.09.10
오라클 SQL 문법  (0) 2020.08.27
오라클 데이터 타입  (0) 2020.08.27
C#과 오라클 연동해보기  (0) 2020.08.26
COMMENT