[DB] ORACLE

[ORACLE] 테이블스페이스 & 데이터 파일 (TABLESPACE & DATA FILE)

mewoni 2021. 1. 21. 10:35
반응형

 

TABLESPACE

오라클 데이터 저장 단위 중 가장 상위에 있는 단위를 테이블 스페이스라고 합니다. 데이터 저장 단위는 물리적, 논리적단위로 나눌 수 있습니다. 물리적 단위는 파일을 의미하고 논리적 단위는 데이터블록 -> 익스텐트 -> 세그먼트 -> 테이블스페이스 이렇게 나뉩니다. 데이터 블록 여러개가 모여 익스텐트 하나를 만들고, 익스텐트 여러개가 모여 하나의 세그먼트를 구성하며, 테이블스페이스는 가장 최상위 개념의 데이터 공간입니다.

 

 

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; -- 제약 조건까지 삭제

 

반응형