테이블스페이스
오라클에서는 테이블스페이스라고 해서 테이블이 저장될 공간을 먼저 만들고 나서 테이블을 생성한다.
오라클 데이터 저장 단위 중 가장 상위에 있는 단위를 테이블 스페이스라고 한다.
데이터 저장 단위는 물리적 단위, 논리적 단위로 나눌 수 있다.
물리적 단위는 파일을 의미하고
논리적 단위는 데이터 블록 -> 익스텐트 -> 세그먼트 -> 테이블스페이스 이렇게 나뉜다.
데이터 블록 여러 개가 모여 익스텐트 하나를 만들고, 익스텐트 여러 개가 모여 하나의 세그먼트를 구성하며, 테이블스페이스는 가장 최상위 개념의 데이터 공간이다.
테이블의 크기가 늘어나서 테이블 스페이스 크기가 자동으로 늘어나게 설정한 상태에서 테이블의 크기가 줄어들면 자동으로 테이블 스페이스의 크기가 줄어들지는 않는다. 이때는 사용자가 수동으로 크기를 설정해야 한다.
데이터 파일
한 테이블스페이스 및 한 데이터베이스에만 속할수 있다.
스키마 객체 데이터의 저장소이다.
테이블스페이스 관리
1. 조회
SELECT * FROM DBA_TABLESPACES; --테이블스페이스 조회
2. 생성
create tablespace [테이블 스페이스명]
datafile 'D:\dev\oradata' --파일경로
size 10M --초기 데이터 파일 크기 설정
autoextend on next 10M -- 초기 크기 공간을 모두 사용하는 경우 자동으로 파일의 크기가 커지는 기능
maxsize 100M -- 데이터파일이 최대로 커질 수 있는 크기 지정 기본값 = unlimited
uniform size 1M -- EXTENT 한개의 크기를 설정
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 tablespace rename [A] to [B]
-- 해당 테이블스테이스의 용량을 1024메가로 변경
alter tablespace [테이블스페이스명] add datafile [추가할데이터파일명] size 1024M;
-- 해당 데이터파일경로에 해당하는 테이블스페이스의 크기가 FULL이 되면 자동으로 100메가씩 증가.
alter database datafile [데이터파일경로] 'autoextend on next 100m maxsize unlmited;
5. USER에게 할당
ALTER USER [USERNAME] DEFAULT TABLESPACE [TABLESPACENAME]
QUOTA UNLIMITED ON [TABLESPACENAME]
TEMPORARY TABLESPACE TEMP;
6. 테이블이 속한 TABLESPACE 확인
SELECT TABLE_NAME, TABLESPACE_NAME FROM DBA_TABLES WHERE OWNER='[USERNAME]';
7. TABLESPACE에 DATA FILE 추가
ALTER TABLESPACE [TABLESPACENAME] ADD DATAFILE '데이터파일 경로\MY_DATA02.dbf' SIZE 30G AUTOEXTEND ON;
8. TABLESPACE 수정/삭제 시 ON/OFFLINE 설정
ALTER TABLESPACE [TABLESPACENAME] OFFLINE; --OFFLINE 설정
ALTER TABLESPACE [TABLESPACENAME] ONLINE; --ONLINE 설정
9. TABLESPACE 공간관리
ALTER DATABASE DATAFILE '데이터파일 경로\MY_DATA01.dbf' RESIZE 30G;
ALTER TABLESPACE [TABLESPACENAME] ADD DATAFILE '데이터파일 경로\MY_DATA01.dbf' SIZE 30G;
ALTER TABLESPACE [TABLESPACENAME] ADD DATAFILE '데이터파일 경로\MY_DATA01.dbf' SIZE 30G AUTOEXTEND ON NEXT 50G MAXSIZE 2048G;
10. TABLESPACE 내 DATA FILE 삭제
ALTER TABLESPACE [TABLESPACENAME] DROP DATAFILE '데이터파일 경로\MY_DATA02.dbf';
11. TABLESPACE 삭제
DROP TABLESPACE [Tablespace Name]
INCLUDING CONTENTS AND DATAFILES -- 테이블 스페이스 내 객체(테이블, 인덱스 등), 물리적 데이터 파일까지 모두 삭제
CASCADE CONSTRAINTS; -- 제약 조건까지 삭제