by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

14S_데이터 파일




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 생성 시 기본적으로 지정되는 방식

문서정보

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.