oracle tablespace

code_able·2023년 10월 28일
0

tablespace란

Oracle에서는 Data file 이라는 물리적 파일 형태 저장하고 이러한 Data file이 하나 이상 모여서 Tablespace라는 논리적 저장공간을 형성합니다.

Tablespace는 하나의 데이터베이스 안에 가장 큰 논리적 저장공간으로 업무의 단위나 사용용도에 따라 여러개의 Tablespace로 분리하여 관리되고 Segment(오브젝트)라는 논리적 저장공간의 집합이기도 합니다.

테이블 스페이스 종류

  • Permanent Tablespace : 가장 일반적인 테이블스페이스로 데이터를 축적용도로 사용되는 공간입니다. Undo와 Temporary와는 다르게 고의적으로 삭제하지 않는한 영구적으로 보존되는 객체들을 저장하기 위한 용도입니다.
    • system : 데이터베이스의 운영에 필요한 기본 정보를 담고 있는 Data Dictionary Table이 저장되는 공간으로 데이터베이스에서 가장 중요한 Tablespace 입니다.
    • SYSAUX : 다양한 유틸리티 및 기능들 분리하여 저장한 공간입니다.
  • Undo Tablespace : 읽기 일관성을 유지하기 위해 사용되는 Tablespace입니다. 데이터베이스 운영 중 많은 사용자들에게서 DML 작업이 이루어집니다. 이때 Rollback하게 되는 경우를 대비하여 DML 작업이 발생했을 때 수정 이전의 값에 대한 정보를 UNDO Segment에 저장합니다.
  • Temporary Tablespace : 사용자 쿼리의 요청으로 정렬하는 작업이 필요한 경우 메모리에 부담을 덜어주기 위해 사용되는 공간입니다.

테이블 스페이스 공간관리 옵션

테이블 스페이스의 데이터가 계속 추가되면 필요에 따라 추가적인 익스텐트가 동적으로 할당될 수 있습니다. 여기에 관리 옵션이 두 가지가 있습니다.

  • LOCAL
    • 테이블스페이스 내에 있는 개별 세그먼트에 대한 공간 할당을 자동으로 관리합니다.
    • 데이터베이스는 각 세그먼트에 대해 해당 테이블스페이스 내에 새로운 익스텐트를 자동으로 할당하고 해제합니다.
  • DICTIONARY
    • 과거 버전의 Oracle에서 사용되던 방식입니다.
    • 익스텐트를 딕셔너리 테이블스페이스에 할당합니다. 이 방법은 현재는 더 이상 권장되지 않습니다.

테이블 스페이스 생성

CREATE TABLESPACE [테이블명]
DATAFILE '/opt/oracle/oradata/db.dbf'
SIZE 10M  -- 초기용량
AUTOEXTEND ON NEXT 10M  -- 자동증가 용량
MAXSIZE 100M  -- 최대로 확장 할 수 있는 용량
EXTENT MANAGEMENT LOCAL
UNIFORM SIZE 1000m  -- 익스텐트를 할당할 때 사용되는 고정된 크기
;

테이블 스페이스 용량조회

SELECT 
    tablespace_name,
    SUM(bytes) / (1024 * 1024) as "Total MB",
    SUM(max_bytes) / (1024 * 1024) as "Max MB"
FROM 
    dba_data_files
WHERE 
    tablespace_name = [테이블명]
GROUP BY 
    tablespace_name;

테이블 스페이스 변경

TABLEPACE에 수동으로 DATAFILE 추가

ALTER TABLESPACE [테이블명] ADD DATAFILE '/opt/oracle/oradata/db.dbf' SIZE 30G;

기존 DATAFILE 속성 변경 - 수동으로 SIZE증가

ALTER DATABASE DATAFILE 
'/opt/oracle/oradata/db.dbf' resize 2G;

기존 DATAFILE 속성 변경 - 자동으로 SIZE증가

  ALTER DATABASE DATAFILE 
  '/opt/oracle/oradata/db.dbf'
  AUTOEXTEND ON NEXT 5M
  MAXSIZE 30G;
profile
할수 있다! code able

0개의 댓글