일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Allocation
- Tables
- Extent
- exec
- Oracle
- table
- 호흡법
- errno 28 on write
- on write
- got errno 28 on write
- truncate
- 가이드
- tablespace
- DROP
- Tibero
- 횡경막
- errno 28
- Procedure
- database
- Deallocation
- ASSM
- segment
- MSSM
- 숨쉬기
- alter
- stored
- 3층
- mysqldump: got errno 28 on write
- db
- 모음
- Today
- Total
Notedb
ORACLE DMT / LMT / FLM / ASSM / MSSM (1) 본문
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 으로 관리하게 된다.
덧. 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 |