본문 바로가기

04번. IT 힌트얻기/▶ DB Tuning

Oracle 데이터베이스의 논리적인 구조

Oracle 데이터베이스의 논리적인 구조

(Oracles Logical Database Structure)

 

 

Oracle 데이터베이스의 논리적인 구조의 이해는 tablespace, data block, extent segment의 개념을 기초로 한다. 또한 schema object(table, view, index, cluster, sequence, stored procedure )나 이들간의 relationship은 데이베이스의 관계형 설계개념을 구성하는 요소들이다.

 

 데이터베이스는 거시적인 관점에서 바라본 정보관리의 최상위 집합체이다. 이러한 데이터베이스는 tablespace라고 명칭하는 논리적인 저장단위로 나뉘어져 있다. 이때 tablespace의 논리적인 정보를 저장하기 위해 각 tablespace에는 하나 또는 여러 개의 datafile이 대응되어 생성된다. (그러나 하나의 datafile에 여러 개의 tablespace가 대응되지는 않는다.)

 

데이터베이스의 데이터를 직접적으로 구성하는 것은 schema object이며, 이들에는 table, view, sequence, stored procedure, synonym, index, cluster, database link가 있다.

 

Oracle data block, extent, segment 개념을 갖는 논리적인 저장구조를 통해 디스크의 사용을 매우 정교하게 제어하고 있다. 데이터베이스는 data block을 최소단위로 하여 데이터를 저장한다. data block은 물리적으로 디스크상에서 일정 크기의 byte에 상응하는 크기를 갖게 되며, 이러한 data block의 크기(DB_BLOCK_SIZE)는 데이터베이스가 생성될 때 정의된다. 따라서 data block Oracle이 데이터를 사용하고 할당하는 I/O의 기본 단위가 된다. 데이터베이스에 설정된 DB_BLOCK_SIZE 정보의 기록위치는 아래와 같다.

 

n  %ORACLE_HOME%\Admin\<SID>\pfile\init.ora  (Windows 운영체제)

n  $ORACLE_HOME/admin/<SID>/pfile/init<SID>.ora  (Unix 운영체제)

 

한편, 운영체제에서는 운영체제가 사용하는 block 크기가 존재하는 반면, Oracle에서는 운영체제 block 단위가 아닌 Oracle data block 단위로 데이터를 처리하기 때문에 Oracle data block 크기는 운영체제 block 크기의 정수배가 되도록 설정할 것을 적극 권장한다. 그렇게 함으로써 불필요한 디스크 I/O를 줄일 수 있기 때문이다. Oracle 8i에서는 기본으로 DB_BLOCK_SIZE 2,048 byte로 되어 있으나, GIS 여건에 맞는 작업을 위해서는 DB_BLOCK_SIZE 8,192 byte로 설정할 것을 권장한다.

 

논리적인 데이터베이스 공간에서 data block 다음 레벨의 개념이 extent이며, 특정 정보(, 테이블 object)를 단일 저장공간에 할당키 위해 구성된 data block의 연속체이다.

 

논리적인 데이터베이스 공간에서 extent 다음 레벨의 개념으로써 특정한 논리적 구조체를 할당하기 위한 extent의 집합이 segment이다. Segment가 사용되는 특정한 논리적 구조체에는,

 

-  Data segment

-  Index segment

-  Rollback segment

-  Temporary segment

 

등이 있다.

 

이상에서 언급한 segment, extent, data block 간의 관계를 도식적으로 표현하면 아래의 그림과 같다.

 

 

Segment

128 K

8K

8K

8K

8K

8K

8K

8K

8K

8K

8K

8K

8K

8K

8K

8K

8K

Extent

32 K

Extent

96 K

data block

 

 

Segment

128 K

8K

8K

8K

8K

8K

8K

8K

8K

8K

8K

8K

8K

8K

8K

8K

8K

Extent

32 K

Extent

96 K

data block

  


또한 데이터베이스, tablespace, datafile schema object 간의 도식적인 관계는 아래와 같다.

데이터베이스

system tablespace

data1.dbf

data2.dbf

user tablespace

data3.dbf

 

 

 


           참고로, Oracle 데이터베이스의 물리적인 구성요소는 datafile, redo log file control file이라고 할 수 있다. , 이들 운영체제 파일들이 데이터베이스의 정보를 저장하는 물리적인 실체이다.