ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • oracle 테이블스페이스
    DataBase/oracle 2020. 4. 26. 17:31

     

     

    테이블 스페이스 :

    데이터를 저장할 때 사용하는 논리적 저장공간

    (하드디스크에서는 실제 여러 개의 물리적인 데이터 파일로 구성될 수 있음) 

     

    1) 시스템 테이블스페이스 (기본적으로 오라클에서 제공해주는 테이블스페이스)

        Data Dictionary 정보, 프로시저, 트리거, 패키지, 시스템 rollback segment, 사용자데이터 포함

         ex) 데이터 변경 후 commit 을 하지 않았을 경우 오라클은 rollback을 위한 데이터도 가지고 있어야 하는데 이러한 공간이 시스템 rollback segment

    2) Non-System 테이블스페이스

        Temporary segment, applicationData segment degment, index, 사용자 데이터 segment

    ex) index를 사용하기위해서는 먼저 index대로 정렬을 시킬 공간이 필요하다 ? 이러한 공간이 temporary segment

     

    테이블스페이스 구성

    세그먼트(segment)

         -익스텐트(extent) : 데이터를 할당하기위한 단위, 연속적인 데이터블록으로 구성

         -데이터블록 : 오라클 입출력 최소단위(저장 최소단위)

     

    테이블스페이스 생성 구문 형식

    create tablespace 이름

    datafile '저장될 경로 및 사용할 파일 명'

    size 저장공간

    default storage storage_clause;

     

    ** 테이블 스페이스를 만들면 하나의 파일로 저장이 된다. 기본 파일명 : DBF.ora

    ** size : 테이블 스페이스의 크기

     

    ** 논리적인 저장 공간!! 만약 테이블 스페이스를 만들고 여러개의 segment를 사용하여 저장공간이 오바되면 또다른 테이블 스페이스를 만들어 사용할 수 있다. 이러한 테이블스페이스들을 모아 하나의 테이블스페이스로 만드는 것도 가능

     

    테이블스페이스 삭제 구문 형식

    DROP TABLESPACE 이름

    [INCLUDING CONTENT[AND DATAFILES]

    [CASCADECONSTRAINTS];

     

    **INCLUDING CONTENT[AND DATAFILES : 지울 때 테이블 스페이스 안의 데이터들도 같이 지울것인지 선택옵션

    ** CASCADECONSTRAINTS : 참조되어있는 테이블을 삭제할 때 옵션...?!

     

    ** 테이블스페이스는 SYS권한에서만 생성가능

     

    1) 테이블 스페이스 생성

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE TABLESPACE test_1
    datafile 'C:\Users\sulki\Desktop\OracleSql\test_3.dbf' size 10M
    default STORAGE ( initial 60M    -- 최초크기의 extent 는 60M
                      next 10M       -- 그 다음은 10M
                      MINEXTENTS 1   -- 최소 extent갯수 : 1
                      MAXEXTENTS 10  -- 최대 extent갯수 : 10
                      PCTINCREASE 0  -- 퍼센테이지increase : 60M를 다 소진 후 
                                     -- 다음 extent가 생성될 때 pctincrease의 퍼센테이지를 반영하여 
                                     -- 생성됨 만약 pctincrease가 50이라면 10M가 생성되는게 아닌 
                                     -- 10의 50%인 5M가 생성됨                 
                      );
    http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

     

    2) 테이블 스페이스의 용량이 부족하여 추가하고싶다면

    1
    2
    alter TABLESPACE test_1
        add datafile 'C:\Users\sulki\Desktop\OracleSql\test_2.dbf' size 10M;
     

    3) 테이블 스페이스에 테이블을 생성하고싶다면 뒤에 붙여주면 된다

    1
    2
    3
    4
    5
    6
    create table aaa
    (
        name varchar2(10)
    )
    TABLESPACE test_1;
     

     

    4) 테이블스페이스삭제

    1
    2
    3
    4
    drop TABLESPACE test_1
    INCLUDING CONTENTS  -- 안에있는 컨텐츠도 지울지 선택하는 옵션
    and DATAFILES;      -- 경로에 생성된 data파일도 같이 지울지 선택하는 옵션
     
    http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

    ** 만약 including contents 옵션을 걸지않으면 에러난다

    drop TABLESPACE test_1
    오류 보고 -
    ORA-01549: tablespace not empty, use INCLUDING CONTENTS option
    01549. 00000 -  "tablespace not empty, use INCLUDING CONTENTS option"
    *Cause:    Tried to drop a non-empty tablespace
    *Action:   To drop all the objects in the tablespace, use the INCLUDING
               CONTENTS option

     

    5) 테이블 스페이스의 size를 자동으로 조정한는 옵션

    1
    2
    3
    4
    5
    6
    alter tablespace test_1
    add datafile 'C:\Users\sulki\Desktop\OracleSql\test_4.dbf' size 10M  --test_4.dbf 의 size를 10M로 지정하지만
    autoExtend on -- 10M가 모자라다면 증가시킬 수 있다
    next 2M       -- 2M씩
    maxsize 200M;   -- 최대 200M까지
                   -- 따라서 test_1에서 사용할 수 있는 최대 size는 210M
     
    http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
     

     

    6) DBA가 수동으로 size 조정

    **alter tablespace가 아닌 alter database 이다!

    1
    alter database datafile 'C:\Users\sulki\Desktop\OracleSql\test_3.dbf' resize 30M;

     

    **dictionary : 데이터 사전, 데이터 베이스를 운영하기 위한 모든 정보를 갖고있음

    < 테이블 스페이스 관련 dictionary >

    1) DBA_TABLESPACES : 모든 테이블스페이스의 저장정보 및 상태정보

    2) DBA_DATA_FILES : 테이블스페이스의 데이터파일 정보

    3) DBA_FREE_SPACE : 테이블스페이스의 사용공간에 관한 정보를 갖고있음

    4) DBA_FREE_SPACE_COALESCE : 테이블스페이스가 수집할 수 있는 EXTENT에 대한 정보

    'DataBase > oracle' 카테고리의 다른 글

    oracle 인덱스  (0) 2021.01.17
    oracle PL/SQL_트리거  (0) 2020.04.26
    oracle PL/SQL_패키지  (0) 2020.04.20
    oracle PL/SQL_서브프로그램_함수  (0) 2020.04.20
    oracle PL/SQL_서브프로그램_프로시저(procedure)  (0) 2020.04.19

    댓글

Designed by Tistory.