Tibero4 기본강좌
Tablespace 관리 0 0 11,393

by 티베로 Tibero Database Tibero Tablespace [2009.11.03]


테이블스페이스란?

테이블스페이스는 논리적 저장 영역과 물리적 저장 영역에 공통적으로 포함되며 Tibero RDBMS의 모든 데이터를 저장한다. 논리적 저장 영역에는 Tibero RDBMS의 모든 데이터가 저장되며, 물리적 저장 영역에는 데이터 파일이 하나 이상 저장된다.

테이블스페이스는 논리적 저장 영역과 물리적 저장 영역을 연관시키기 위한 단위이다.

테이블스페이스의 구성

테이블스페이스는 크게 논리적 구성과 물리적 구성의 2가지 구성으로 Tibero RDBMS의 데이터를 저장한다.

테이블스페이스의 논리적 구성

다음은 테이블스페이스의 논리적 구성을 나타내는 그림이다.

  • [그림 1] 테이블스페이스의 논리적 구성
  • Tibero4  테이블스페이스의 논리적 구성

테이블스페이스는 [그림 1]과 같이 세그먼트(Segment), 익스텐트(Extent), 데이터 블록(Block)으로 구성된다. 다음은 테이블스페이스의 각 구성요소에 대한 설명이다.

구성 요소 설명
세그먼트 익스텐트의 집합이다.
하나의 테이블, 인덱스 등에 대응되는 것으로, CREATE TABLE 등의 문장을 실행하면 생성된다.
익스텐트 연속된 데이터 블록의 집합이다.
세그먼트를 처음 만들거나, 세그먼트의 저장 공간이 더 필요한 경우, Tibero RDBMS는 테이블스페이스에서 연속된 블록의 주소를 갖는 데이터 블록을 할당 받아 세그먼트에 추가한다.
데이터 블록 데이터베이스에서 사용하는 데이터의 최소 단위이다.
Tibero RDBMS는 데이터를 블록 단위로 저장하고 관리한다.

테이블스페이스의 물리적 구성

다음은 테이블스페이스의 물리적 구성을 나타내는 그림이다.

  • [그림 3] 테이블스페이스의 물리적 구성
  • Tibero4  테이블스페이스의 물리적 구성

테이블스페이스는 [그림 2]와 같이 물리적으로 여러 개의 데이터 파일(Data File)로 구성된다. Tibero RDBMS는 데이터 파일 외에도 컨트롤 파일(Control File)과 로그 파일(Log File)을 이용하여 데이터를 저장할 수 있다.

테이블스페이스의 관리

테이블스페이스를 생성, 변경 및 제거하는 방법을 살펴보자. 여기에서는 일반 사용자가 생성한 테이블스페이스인 비시스템 테이블스페이스(Non System Tablespace)의 관리 방법을 간단히 설명한다.

테이블스페이스의 생성

테이블스페이스를 생성하기 위해서는 CREATE TABLESPACE 문을 사용해야 한다. 테이블스페이스의 이름, 테이블스페이스에 포함되는 데이터 파일과 데이터 파일의 크기, 익스텐트의 크기 등을 설정할 수 있다.

다음은 하나의 데이터 파일 my_file.dbf로 구성되는 테이블스페이스 my_space를 생성하는 예이다.

CREATE TABLESPACE my_space                                   
DATAFILE '/usr/tibero/dbf/my_file.dbf' SIZE 50M             
  EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K;

예제에서 생성된 my_space라는 테이블스페이스는 데이터 파일 my_file.dbf의 크기가 50MB이며, 테이블스페이스의 크기도 50MB가 된다. 하나의 익스텐트는 256K의 크기로 설정된다.

테이블스페이스의 변경

- 테이블스페이스에 새 데이터 파일 추가

ALTER TABLESPACE 문에서 ADD DATAFILE 절을 삽입하여 새로운 데이터 파일을 테이블스페이스에 추가할 수 있다. 다음은 테이블스페이스 my_space에 새로운 데이터 파일 my_file02.dbf를 추가하는 예이다.

ALTER TABLESPACE my_space ADD DATAFILE 'my_file02.dbf' SIZE 20M;

- 테이블스페이스의 크기 변경

ALTER DATABASE 문을 사용하면 데이터 파일의 크기를 늘리거나 줄이는 것이 모두 가능하다. 단, 데이터 파일의 크기를 줄이는 경우, 데이터 파일 안에 저장되어 있는 스키마 객체의 전체 크기보다 작을 경우에는 에러가 발생된다. 다음은 데이터 파일 my_file01.dbf의 크기를 100M으로 변경하는 예이다.

ALTER DATABASE DATAFILE ’my_file01.dbf’ RESIZE 100M;

테이블스페이스의 제거

테이블스페이스를 제거하기 위해서는 DROP TABLESPACE 문을 사용해야 한다. 단, 테이블스페이스를 제거하면 그 안에 포함되어 있는 모든 스키마 객체가 제거되므로, 주의해야 한다.

다음은 앞에서 생성된 my_space라는 이름의 테이블스페이스를 제거하는 예이다.

DROP TABLESPACE my_space;

테이블스페이스를 구성하는 데이터 파일까지 제거하려면 다음과 같이 INCLUDING 절을 삽입해서 DROP TABLESPACE 문을 실행해야 한다.

DROP TABLESPACE my_space INCLUDING CONTENTS AND DATAFILES;

테이블스페이스의 조회

Tibero RDBMS에서는 테이블스페이스를 효율적으로 관리하기 위해 다음 표에 나열된 뷰(정적 뷰, 동적 뷰 포함)를 통해 테이블스페이스의 정보를 제공하고 있다.

테이블스페이스 내의 익스텐트의 크기 및 개수, 할당된 서버, 포함된 데이터 파일의 이름 및 크기, 세그먼트의 이름 및 종류, 크기 등의 정보를 제공한다.

설명
DBA_TABLESPACES Tibero RDBMS 내의 모든 테이블스페이스의 정보를 조회하는 뷰이다.
USER_TABLESPACES 현재 사용자에 속한 테이블스페이스의 정보를 조회하는 뷰이다.
V$TABLESPACE Tibero RDBMS 내의 모든 테이블스페이스에 대한 간략한 정보를 조회하는 뷰이다.

- 강좌 URL : http://www.gurubee.net/lecture/2077

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입