Notedb

ORACLE DMT / LMT / FLM / ASSM / MSSM (1) 본문

DATABASE/ORACLE

ORACLE DMT / LMT / FLM / ASSM / MSSM (1)

NotedbAdmin 2023. 11. 17. 16:48

 

 

 

Free EXTENT TABLE - Free Block 조회 FET$

USED EXTENT TABLE - Dirty Block 조회 UET$

 

 

 

   1) DMT ( DICTIONARY MANAGEMENT TABLESPACE )

     - 사용자가 작업을 통해 DIRTY_EXTENT 에서 FREE_EXTENT가 된다면 위 FET$ / UET$ 테이블을 업데이트 해야 된다. 딕셔너리를 사용해 일괄적으로  테이블스페이스를 관리하는 방식 

 

 

 

   2) LMT ( LOCALLY MANAGEMENT TABLESPACE ) 

: ORACLE 9i 부터 사용

     - 해당 TABLESPACE의 데이터 파일 HEADER에 존재하는 비트맵에  EXTENT의 사용유무를 기록하는 방식으로 딕셔너리가 아닌 블록에서 자체적으로 해결하기 때문에 부하가 줄어든 방식

 

 

 

 

   3) FREE LIST MANAGEMENT ( FLM )  LIFO  

:  ORACLE 10g R1까지 사용

 

        가) MASTER FREE LIST

               - 프리나 프리반환된 블록의 목록 저장되어 전체블록관리

         나) PROCESS FREE LIST

               - Segment에 트랜잭션이 끝난 Free Block  명단을 가지고 있다. 경합방지,  Buffer busy waits 현상이

                 발생되기 때문에 각 프로세스별 Free_List 분리하여 할당해 주는 것이다.

         다) TRANSACTION FREE LIST

               - 현재 세션에서 TRANSACTION 수행 중  Free_block 변환된 블록들의 목록관리 > 트랜잭션 후

                Master_Free_List 로 변환하는 대신에 해당 트랜잭션이 수행되고 있는 기간 동안

                자신의 트랜잭션 수행시 필요한 경우 우선적으로 사용함.

               - 트랜잭션이 끝나게 되면 COMMIT 리스트에 있는 Free_block 들은 모두 Master_Free_List로 반납.

               - Free_Extent 가 없을 경우  HWM을 오른쪽으로 이동시킨 후에 Free_Extent를 새로 생성 및 할당.

               -  HW락을 획득해야 한다.

               -  위 방식은  Segment Header, HWM정보, 사용중인  Extent들의 정보가 저장되는 Extent Map,

                  Free block들의 위치값을 가지는 Free List Area 공간, 실제 데이터가 저장되는 Block 들로 구성.

 

 

 

 

    4) ASSM ( Automatic Segment Space Management )

: ORACLE 9i 부터 도입했으나, ORACLE 10g R2부터 DEFAULT 사용

 

         - Automatic Segment Space Management (ASSM) 사용한 EXTENT 관리

         - FLM은 사용자의 능력에 따라 성능차이가 심하나, ASSM 은 오라클 자동관리를 따른다.

         - 기존의 FREELIST를 사용하는 대신  BLOCK의 사용 정도를 BITMAP 으로 관리하게 된다.

 

 

 

각 DATA BLOCK의 HEADER에 저장되며, 이 정보를 가지고 BMB(BIT MAP BLOCK)이 만들어진다.

 

 

덧. ASSM에서 SEGMENT BLOCK를 순서대로 사용하지 않는다.

덧. FLM 은 HWM을 기준으로 왼쪽은 사용중인 BLOCK 오른쪽은 FREE BLOCK 였으나,  ASSM은 BLOCK을 순서대로 쓰지 않기에 중간에 비어있는 BLOCK이 생기게 된다.

덧. ASSM에서 HIGH HWM 과 LOW HWM이라는 개념이 등장한다.

 

     * LOW HWM : 이하의 블록들은 모두 포맷 상태의 블록으로 현재 사용중인 블록이다.

     * HIGH HWM : 이상의 블록들은 모두 비포맷 상태의 블록으로 아직 사용되지 않은 블록들이다.

     * LOW와 HIGH 사이에는 아직 사용되지 않은 비포맷 상태의 블록들이 존재할 수 있으며 이 블록들은 추후에  INSERT 작업에 의해 사용될 때 포맷한다.

 

 

 

 

 

     5) MSSM ( Manually Segment Space Management )

         - Manually Segment Space Management (MSSM) 사용한 EXTENT 관리

         - Segment Header 에서 Free List 로 여유공간을 갖는 방식

 

 

 

 

     # 오라클은  LMT + ASSM 사용을 권장합니다. (DMT 생성된 테이블 관리를 위해 DMT 명령이 남아 있습니다)

 

         - LMT + ASSM은 DEFAULT 값으로 아래와 같이 Datafile을 생성해도 결과는 동일합니다.

         - SQL > create tablespace [테이블스페이스명] datafile '/경로/파일명.dbf' size 100M;

 

         - LMT + MSSM

         - SQL > create tablespace [테이블스페이스명] datafile '/경로/파일명.dbf' size 100M

                      extent management LOCAL segment space management MANUAL;

 

         - DMT + ASSM  >  불가능

         - SQL > create tablespace [테이블스페이스명] datafile '/경로/파일명.dbf' size 100M

                      extent management DICTIONARY segment space management AUTO;

 

         - DMT + MSSM

         - SQL > create tablespace [테이블스페이스명] datafile '/경로/파일명.dbf' size 100M

                      extent management DICTIONARY  segment space management MANUAL;

 

 

 

'DATABASE > ORACLE' 카테고리의 다른 글

오라클 튜닝 가이드문서 ( 9i )  (0) 2024.02.26
Oracle Block / Extent / Segment / Tablespace (2)  (0) 2023.11.17
Oracle Block / Extent / Segment / Tablespace (1)  (0) 2023.11.17
DB명세서 작성 쿼리  (0) 2023.10.24
HWM RESET  (0) 2023.10.20