5. 데이터 파일

데이터 파일은 데이터를 저장하는 공간이다.

5.1 파일 시스템 메커니즘

오라클에서 데이터를 저장할 때 사용 가능한 파일 시스템 메커니즘은 4가지가 있다.

  • cooked OS 파일 시스템 : 워드 프로세스에서 만든 문서와 같은 파일
  • raw partition : 포맷되지 않은 디스크를 말한다.
  • Automatic Storage Management : 오라클에서 제공하는 파일 시스템
  • Clustered File System : RAC 환경을 위한 파일시스템. RAC내의 다수 노드가 공유할 수 있는 OS 파일 시스템 유사한 것을 제공한다.

5.2 오라클 데이터베이스 스토리지 계층

테이블스페이스 는 물리적으로 데이터파일로 구성되어있다.

5.2.1 세그먼트

테이블스페이스에 저장된 핵심 조직 구조이다.
다음과 같은 종류가 있다.

  • 언두
  • 템퍼러리
  • 클러스터
  • 인덱스
  • 등등
5.2.2 익스텐트

파일 안에 논리적으로 할당된 공간으로 모든 세그먼트는 하나 이상의 익스텐트로 구성된다.

[ 참고 ]
11g release 2부터 deferred 개념이 추가되었다. 이것은 세그먼트 생성 시 처음부터 익스텐트를 할당하는 것이 아니라 데이터가 추가될 때 할당하는 것을 말한다.
익스텐트들은 하나의 세그먼트를 구성한다고 해도 다른 데이터 파일이나 다른 디스크에 있을 수 있다. 즉, 동일한 파일 위치에 있지 않아도 된다는 뜻이다. 하지만 항상 논리적으로 파일 안에서 연속적이다.

5.2.3 블럭

오라클에서 공간을 할당하는 최소 단위로서 하나의 익스텐트는 여러 개의 블록들로 구성된다. 실제 데이터를 저장하는 가장 작은 최소 돤위로 I/O를 일으키는 최소단위이다. 크기는 2K, 4K, 8K, 16K중 하나를 선택할 수 있다. 가끔씩 32K가 되는 경우도 있다.
[참고]
다중 블록 크기 기능은 대부분의 경우, transportable 테이블스페이스를 만들 목적으로 소개되었다.
데이터베이스 기본 블록 크기는 CREATE DATABASE 명령어를 통해 파일을 초기화할 때 결정하는데, 이때 결정되는 값으로 SYSTEM tablespace의 블록 크기가 결정된다.
하나의 테이블스페이스에서 모든 블록 크기는 동일하다. LOB 테이블을 갖는 테이블과 같은 다중 세그먼트 오브젝트는 동일한 테이블스페이스에서 각 세그먼트들에 대해 서로 다른 블록 크기를 가질 수 있지만, 하나의 테이블 스페이스에 속한 하나의 세그먼트는 반드시 동일한 크기의 블록으로 구성되어야 한다.
– p134 그림

  • 블록 헤더 : 불록 유형(테이블 블록, 인덱스 블록) 에 대한 정보, 블록 활성화 여부, 과거 트랜잭션 정보 디스크에서의 블록 주소 위치
  • table directory, row directory : 가장 일반적인 힙 구조의 테이블 블록 유형이라면 꼭 있어야 하는 영역
  • table directory : 블록에 로우를 저장한 테이블에 대한 정보
  • row directory : 블록 안에서 발견할 수 있는 로우에 대해 설명한 정보, 로우가 속한 블록의 데이터 포인트를 찾을 수 있도록 지원하는 포인터의 배열
5.2.4 테이블스페이스

테이블 스페이스는 세그먼트를 담고 있는 일종의 그릇으로, 오라클의 논리적인 스토리지 저장소 이다.

  • 하나의 세그먼트는 하나의 테이블스페이스에만 담길수 있고, 테이블스페이스는 여러 개의 세그먼트를 담을 수 있다.
  • 세그먼트의 모든 익스텐트들은 세그먼트가 속한 테이블 스페이스에서만 존재할 수 있다.

5.3 Dictionary Managed 테이블스페이스와 Locally Managed 테이블스페이스

테이블스페이스의 익스텐트 할당 방법에 대해 알아보자.
[Dictionary Managed TBS]
테이블 스페이스 내 공간을 관리하기 위해 데이터 딕셔너리 테이블을 사용하는 방식의 테이블 스페이스

  • 한정된 자원에 대한 동시 접근으로 인하여 다양한 대기 이벤트를 발생시킨다.
  • 공간을 빈번히 할당하게 되면 서비스 성능에 영향을 미친다.

[Locally Managed TBS]
Dictionary Managed 방식의 문제점을 해결하기 위해 오라클 8.1.5에 새롭게 나온 개념으로 각 데이터 파일에 저장된 비트맵 정보를 이용하여 익스텐트 관리를 하는 것을 말한다.

  • uniform 익스텐트 크기를 제공한다.
  • 익스텐트 관리에 드는 비용이 Dictionary에 비해 많이 줄어든다.

[참고]
transportable tablespace 기능을 지원하기 위해 Dictionary Managed TBS는 생성할 수 없지만, 지원은 된다.