전문가를 위한 오라클 데이터베이스 아키텍처 (2014년)
데이터 파일 0 0 55,886

by 구루비스터디 데이터 파일 Data file 블록 [2018.09.27]


Data file

Datafile 이란

  • DB 의 데이터를 담는 파일
  • 모든 DB 는 하나 이상의 Datafile 을 가진다


기본 Datafile 은
  • SYSTEM Tablespace file : DB 딕셔너리 데이터를 담는 파일
  • SYSAUX Tablespace file : DB Non-Dictionary 데이터를 담는 파일
  • USERS Tablespace file : 기본 제공되는, 유저 데이터를 담는 파일


파일시스템 방식

Cooked OS Filesystem
  • 일반 OS 파일시스템


Raw Partition
  • OS 에서 포맷되지 않은 디스크
  • 디스크가 하나의 데이터파일로 인식
  • OS 레벨의 데이터 캐싱 없이 DB 로 직접 엑세스 가능하여 성능 향상 가능


ASM
  • Database 가 관리하는 파일시스템


위 세 가지 방식을 하나의 DB 에서 혼용하여 쓸 수 있다
  • OCFS (Oracle clustered Filesystem)
  • filesystem 을 다수의 노드 간 공유할 수 있도록 해 주는 솔루션
  • Oracle Linux 에서 사용 가능(HP/AIX 등의 서버는 벤더사에서 제공하는 공유 솔루션이 별도로 존재 함)


스토리지 계층

Segment
  • Tablespace 에 저장되는 핵심 조직구조
  • 스토리지 공간을 실제 점유하는 Object 단위
Extent
  • 세그먼트의 조합 단위, 하나 이상의 익스텐트로 세그먼트
  • Datafile 내부에서 공간 할당 단위 -> 익스텐트 안의 공간은 논리적으로 파일 하나에서 연속적이다
  • oracle 11g r2 에서는 deferred segment 개념 도입, 세그먼트 오브젝트 생성 후에도 데이터 들어가기 전까지 익스텐트 할당 안함
  • 1 Block ~ 2GB 까지 다양한 크기 가능


블록
  • 익스텐트의 구성 단위
  • 데이터 I/O 를 위한 최소단위
  • 일반적으로 2, 4, 8, 16, 32kb 단위로 구성
  • 기본 블록 크기는 DB 생성시에 결정되며 System Tablespace 의 블록 단위가 됨
  • 다른 테이블 스페이스 추가 시에는 다른 블록 사이즈 지정 가능
  • 하나의 세그먼트 블럭 단위는 동일


블록 구조
  1. 헤더
    • 블록 유형 정보(테이블 블럭/인덱스 블럭)
    • 블록에 활성화 되었거나 과거 트렌젝션과 관련된 블록 관련 정보
    • 디스크에서의 블록 주소
  2. 테이블 디렉터리
    • 일반적인 힙 구조의 테이블 유형일 때 필요함
  3. 로우 딕셔너리
    • 블록 내부에서 특정 Row 를 찾을 수 있도록 하는 포인터의 배열
  4. 프리스페이스
    • 다들 아시는 블록 안의 여유공간
  5. 데이터
    • 데이터 공간
  6. Tail


테이블스페이스
  • 세그먼트를 담는 공간
  • 각 세그먼트는 하나의 테이블스페이스에만 담을 수 있음
  • 하나 이상의 데이터 파일로 구성


테이블스페이스 옵션 Dictionary Managed - Locally Managed
  • 8.1.5 이전까지는 딕셔너리 관리 방식의 테이블스페이스 사용
    • 익스텐트 할당을 위해 빈 공간을 딕셔너리에서 찾아야 함
    • 과도한 대기 이벤트 발생시켜 성능 저하 가능
    • TTS(Transportable TableSpace) 를 사용하여 Dictionary TBS 를 가져올 때를 대비하여 남겨 놓은 기능
  • 8.1.5 이후 Locally 방식 도입
    • 각 데이터 파일에 저장 된 비트맵을 이용해 빈 공간 확인 가능
    • DB, Tablespace 생성 시 기본적으로 지정되는 방식
"데이터베이스 스터디모임" 에서 2014년에 "전문가를 위한 오라클 데이터베이스 아키텍처 " 도서를 스터디하면서 정리한 내용 입니다.

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

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

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

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