오라클 테이블스페이스
오라클 Tablespace 와 Datafile
1. Tablespce 와 Datafile 개요
오라클은 data 를 논리적으로 tablespace 에 물리적으로는 datafile 에 저장한다.
Database, tablespace, datafile 은 긴밀하게 연결되어 있다.
- 오라클의 database 는 하나 이상의 논리적 저장소인 tablespace 로 구성되어 있다.
- 각 tablespace 는 하나 이상의 datafile 로 구성되어 있다. datafile 은 오라클이 동작 중인 OS 에 맞게 적용된 물리적 구조이다.
- database 의 data 는 datafile 에 저장되고 datafile 은 tablespace 를 구성한다. 그리고 tablespace 가 모여 database 를 구성한다.
2. Database 에 추가 공간 할당하기
database 에 세 가지 방법으로 추가 공간을 할당할 수 있다.
- tablespace 에 datafile 추가
- 새로운 tablespace 생성
- datafile 의 사이즈 늘이기
1) tablespace 에 datafile 추가
2) 새로운 tablespace 생성
3) datafile 의 사이즈 늘이기
3. 테이블 스페이스 사용법
1) 테이블 스페이스 생성
CREATE TABLESPACE [테이블 스페이스 명]
DATAFILE [파일경로]
SIZE [초기 데이터 파일 크기]
AUTOEXTEND ON NEXT 10M -- 초기 크기 공간을 모두 사용하면 크기를 자동으로 10M 만큼 늘인다.
MAXSIZE 100M -- 데이터파일이 최대로 커질 수 있정 크기를 100M으로 지로
UNIFORM SIZE 1M -- EXTENT 한 개의 크기를 1M으로 설정
2) 전체 테이블 스페이스 조회
SELECT * FROM dba_tablespaces;
3) 전체 테이블 스페이스 경로 및 용량 조회
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;
4) 테이블의 테이블 스페이스 변경
ALTER TABLE [테이블 명] move tablespace [테이블 스페이스 명]
5) 테이블 속성 변경/삭제
-- 테이블 스페이스의 물리적인 파일의 이름 또는 위치 변경
ALTER TABLESPACE RENAME [A] TO [B];
-- 테이블 스페이스의 용량을 1024 메가로 변경
ALTER TABLESPACE [테이블 스페이스명] ADD DATAFILE [추가할 데이터파일명] SIZE 1024M;
-- 데이터 파일 경로에 해당하는 테이블스페이스의 크기가 FULL 되면 자동으로 100M 씩 증가
ALTER DATABASE DATAFILE [데이터 파일 경로] 'autoextend on next 100m maxsize unlimited';
-- 테이블 스페이스 내의 객체 모두 삭제
DROP TABLESPACE [테이블 스페이스명] INCLUDE CONTENTS;
-- 테이블 스페이스의 모든 세그먼트를 삭제 (데이터가 있는 테이블 스페이스 제외외
DROP TABLESPACE [테이블 스페이스명] INCLUDING CONTENTS;
-- 테이블 스페잇의 물리적 파일까지 삭제
DROP TABLESPACE [테이블 스페이스명명 INCLUDING CONTENTS AND DATAFILES;