파일 시스템 메커니즘 - 오라클에 데이터를 저장하기 위해 사용할 수 있는 시스템 상의 네가지의 메커니즘

 

  • cooked OS(Operating System) 파일 시스템 : 운영체제에서 제공되는 일반적인 용도의 파일 시스템
  • raw partition : 파일 형태가 아닌, 포맷되지 않은 디스크 자체를 의미함. 파일 시스템을 사용할 경우 OS가 I/O를 위한 버퍼링 작업을 하는데, DB의 입장에서는 그러한 버퍼링을 사용하지 않는 것이 되려 성능상 좋다. raw 디바이스의 경우 관리는 더욱 불편하지만, 이러한 성능상의 장점으로 인해 사용되는 케이스가 있다.
  • Automatic Storage Management(ASM) : 10g R1부터 추가된 기능. 오라클 데이터베이스와 관련된 파일을 ASM영역 안에 저장해 관리 가능하다. 일반적인 파일 시스템을 사용하는 것과 비슷한 기능이 제공되지만, OS가 아닌 오라클 인스턴스가 파일 입출력을 관리하게된다. 11g R2의 Grid Infrastructure가 등장하면서 기능이 많이 추가되어 일반 클러스터 파일 시스템처럼 사용하는 것도 가능하게 되었다.
  • Clustered File System : 기본적으로는 일반적인 파일 시스템과 같지만 동시에 여러 시스템에 마운트되어 사용 가능하다. RAC 구성에서 파일 시스템을 사용하려 한다면 클러스터 파일 시스템을 사용해야한다.

 

오라클 데이터베이스 스토리지 계층 - 오라클이 데이터를 저장하기 위해 사용하는 내부적인 저장 구조

 

  • 세그먼트 : 디스크 공간을 차지하는 모든 오브젝트는 세그먼트에 저장됨. 언두, 템포러리, 클러스터, 인덱스 세그먼트 등이 있음. 세그먼트는 하나 이상의 익스텐트로 구성된다. 세그먼트는 테이블스페이스 내에 저장된다.
  • 익스텐트 : 데이터 파일 안에서 논리적으로 연속된 블록들의 집합. 논리적으로 연속되지만 RAID 사용시와 같이 서로 다른 디스크에 위치할 경우도 있다. 다만 하나의 익스텐트내의 블록들은 논리적으로는 반드시 연속적이며, 모두 같은 파일 내에 존재한다. 하나의 세그먼트가 여러개의 데이터파일에 걸쳐 저장될 수 있다. 따라서 하나의 세그먼트를 구성하는 익스텐트라 하더라도 서로 다른 파일상에 존재할 수도 있다. 좌우간 하나의 익스텐트는 하나의 파일안에, 논리적으로 연속되게 저장된다. 11g R2부터 Deferred Segment Creation 이라는 기능이 추가 되었고, 세그먼트 생성시 익스텐트가 할당되는 것이 아니라, 실제로 데이터가 저장될 때에 익스텐트를 최초로 할당해주게 된다.
  • 블록 : 오라클이 공간을 할당하는 기본 단위. 즉, 데이터를 저장하기 위한 최소 단위이자, 최소 I/O 단위가 된다. 2KB ~ 32KB 사이에서 사용자가 크기를 지정해줄 수 있다.
  • 테이블스페이스 : 세그먼트를 담고있는 일종의 그릇. 세그먼트는 하나의 테이블스페이스 안에만 저장되며, 테이블스페이스는 하나 이상의 파일로 구성된다. 테이블스페이스는 오라클에서 사용되는 논리적인 저장장소이며, 그 위에 세그먼트를 생성해주고 나면, 개발자의 입장에서는 물리적인 스토리지단에서의 정보까지 알 필요도 없게된다.

 

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

 

  • Dictionary-Managed 테이블스페이스
      테이블스페이스의 익스텐트 할당을 관리하기 위해 데이터 딕셔너리 테이블을 이용한다. 오브젝트에 할당된 모든 익스텐트 정보(SYS.UET$)와, 사용 가능한 여유 익스텐트 정보(SYS.FET$)를 시스템 테이블스페이스에 저장해 놓고, 익스텐트 할당시에도 시스템 테이블스페이스에서 익스텐트 할당 정보를 업데이트해주게 된다. 익스텐트 할당시마다 데이터 딕셔너리 테이블을 사용하게 되므로 그에 따른 경합발생이란 문제가 있었다.
  • Locally-Managed 테이블스페이스
      개별 테이블스페이스마다 하나의 데이터파일 헤더에 익스텐트 사용여부를 체크하기 위한 비트맵을 생성하여 이를 통해 익스텐트 할당을 관리한다. 실상 Dictionary-managed 방식을 대체하기 위해서 만들어진 개념이며, SYSTEM 테이블스페이스가 Locally managed 방식이라면(기본값이 locally), 그 데이터베이스에서 dictionary managed 테이블스페이스가 생성되지도 않는다. 이 경우에는 TTS기능을 통해 dictionary-managed 테이블스페이스를 이관해올 경우에나 사용이 가능하다.
SQL> CREATE TABLESPACE dmt datafile '+DGDATA' SIZE 100m extent management dictionary;
CREATE TABLESPACE dmt datafile '+DGDATA' SIZE 100m extent management dictionary
*
ERROR AT line 1:
ORA-12913: Cannot CREATE dictionary managed TABLESPACE


SQL> !oerr ora 12913
12913, 00000, "Cannot create dictionary managed tablespace"
// *Cause: Attemp TO CREATE dictionary managed TABLESPACE IN DATABASE 
//         which has SYSTEM TABLESPACE AS locally managed
// *Action: CREATE a locally managed TABLESPACE.

 

레이블 (0)

  • 레이블 없음

0 댓글

로그인 상태가 아닙니다. 변경하는 경우 익명으로 표기됩니다. 이미 계정이 있다면 로그인을 원하실 수 있습니다.

첨부 파일  (0)

첨부 파일 추가하기
공유된 파일이 아직 없습니다.