Roel Notebook

[Oracle] 오라클 테이블 스페이스 사용법(조회, 생성, 삭제)

by Roel Downey

DB

728x90
반응형

오라클 테이블 스페이스(Table Space)란 무엇인가?

오라클은 데이터를 관리하는 데이터베이스이다. 데이터를 어딘가에 저장해놓고 사용하는 시스템이라고 볼 수 있다. 그리고 데이터 저장 단위 중 가장 상위에 있는 단위를 테이블 스페이스라고 한다. 데이터 저장 단위는 물리적, 논리적 단위로 나눌 수 있다. 물리적 단위는 파일을 의미하고 논리적 단위는 데이터블록 -> 익스텐트 -> 세그먼트 -> 테이블스페이스 이렇게 나뉜다. 데이터 블록 여러개가 모여 익스텐트 하나를 만들고, 익스텐트 여러개가 모여 하나의 세그먼트를 구성하는 식이다.  테이블 스페이스는 가장 상위개념이다.

 

오라클 테이블 스페이스 사용법

SQL 개발 툴이 있으면 개발 툴을 실행 시키고 없다면 윈도우는 cmd, 리눅스는 터미널을 열고 SQL PLUS를 실행시킨 뒤 System 아이디로 로그인 한 다음 테이블 스페이스 설정 작업을 하면 된다.

 

테이블 스페이스 생성

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

 

전체 테이블 스페이스 조회

select * from dba_tablespaces;

 

전체 테이블 스페이스 경로 및 용량 조회

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;

 

테이블의 테이블 스페이스 변경

alter table [테이블명] move 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;

 

테이블 스페이스 삭제

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

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

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

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

 

테이블 스페이스 작동방식

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

 

728x90
반응형

블로그의 정보

What doing?

Roel Downey

활동하기