8. 블록 클린아웃
2010.05.30 22:27
- 블록 클린아웃(Block Cleanout)
트랜잭션에 의해 설정된 Row Lock 을 해제하고 블록 해더에 커밋 정보를 기록하는 오퍼레이션 - Row Lock
레코드의 속성(Lock Byte)로 관리, 로우 해더라부터 블록 해더에 있는ITL엔트리를 가리키는 포인터 - 오라클의 블록 클린아웃
- Delayed 블록 클린아웃
- 커밋 클린아웃 (=fast 블록 클린아웃)
- 커밋 클린아웃 (=fast 블록 클린아웃)
(1) Delayed 블록 클린아웃
- 트랜잭션이 갱신한 블록 개수가 총 버퍼 캐시 블록 개수의 1/10을 초과할때 사용
- 수행작업
- ITL 슬롯에 커밋 정보저장
- 레코드에 기록된 Lock Byte 해제
- Online Redo에 Logging
- 블록을 읽는 과정에서 ACTIVE 블록( 다른 트랜잭션이 발생시킨 변경사항에 대한 커밋 정보가 ITL에 기록되지 않은상태) 이면
읽기전에 먼저 블록 클린아웃을 시도
(2) 커밋 클린아웃 (= FAST 블록 클린아웃)
- OPS 환경에서 과도한 ping이 발생하는 문제를 해결하기 위해 도입
OPS(Oracle Parallel Server)
: 9i 이전 버전,, datafile 쓰기 전까지 buffer 내용을 각노드끼리 공유디스크를 통해 주고 받음 (ping)
RAC(real application cluster)
: 9i 이후 버젼 , cache fusion, 노드간 일종의 고속네트웍을통해 필요내용을 주고 받음
: 9i 이전 버전,, datafile 쓰기 전까지 buffer 내용을 각노드끼리 공유디스크를 통해 주고 받음 (ping)
RAC(real application cluster)
: 9i 이후 버젼 , cache fusion, 노드간 일종의 고속네트웍을통해 필요내용을 주고 받음
- 트랜잭션이 갱신한 블록 개수가 버퍼 캐시 블록 개수의 1/10을 초과하지 않을 경우 커밋 시점에 곧바로 블록 클린 아웃을 수행
- 커밋 시점에 ITL 슬롯에 커밋 정보만 저장하고 로우 헤더에 기록된 Lock Byte는 해제하지 않음 ( 로깅을 수행하지 않기위함)
- 해당 블록을 갱신하려고 Current 모드로 읽는 시점에 Lock Byte 를 해제하고 완전 클린아웃을 수행후 Online Redo 로깅을 수행
- Delayed 로깅 블록 클린아웃 (Delayed Logging Block Cleanout) 이라고 부름
(3) ITL 과 블록 클린아웃
Itl Xid Uba Flag
Lck Scn/Fsc 0x01 0x0006.016.00000378 0x008009f9.03f0.18 --U- 1 fsc 0x0000.0028b73e 0x02 0x0005.01d.0000038c 0x0080015a.02ef.05 C--- 0 scn 0x0000.0028b691 0x03 0x0005.00d.000003c4 0x00801a0b.01d1.1d C-U- 0 scn 0x0000.006770c0 |
0x01:
Lck=1 (로우
헤더에 Lock Byte가 해제되지 않음)
Scn/Fsc : FSC (Fast 클린아웃상태)
Flag: U
Scn/Fsc : FSC (Fast 클린아웃상태)
Flag: U
- Fast 클린아웃 - 곧바로 재사용될수 없고 쓰기 작업을 위해 블륵을 읽히는 순간 Lock Byte를 해제하고 재사용
0x02: )
Flag: C
Scn/Fsc: Scn 정확한 커밋 시점 정보
Scn/Fsc: Scn 정확한 커밋 시점 정보
- Dlayed 블록 클린아웃에 의해 클린아웃된 경우 - 01번에서 Lock byte가 해제된상태 (ITL 언제든 재사용가능)
0x03:
Flag: C-U-
Scn/Fsc: scn
- 추정된 커밋 SCN(Upper bound commit number)
Scn/Fsc: scn
- 추정된 커밋 SCN(Upper bound commit number)
- 추정된 커밋 SCN - Lock Byte가 완전히 해제, 완전 클린아웃
- 참고) http://www.adp-gmbh.ch/ora/misc/dump_block.html <- DATA BLOCK DUMP 방법
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
67 |
Front Page
![]() | 운영자 | 2010.05.16 | 155060 |
66 | 1 장. 오라클 아키텍처 | 운영자 | 2010.05.19 | 18062 |
65 |
1. 기본 아키텍처
[1] ![]() | 휘휘 | 2010.05.22 | 20158 |
64 | 3. 버퍼 Lock [1] | 휘휘 | 2010.05.23 | 15483 |
63 |
2. DB 버퍼 캐시
![]() | 휘휘 | 2010.05.23 | 22108 |
62 |
4. Redo
![]() | 휘휘 | 2010.05.23 | 11513 |
61 | 9. Snapshot too old | balto | 2010.05.30 | 8313 |
60 | 10. 대기 이벤트 | balto | 2010.05.30 | 8203 |
59 | 7. Consistent vs. Current 모드 읽기 | 휘휘 | 2010.05.30 | 10781 |
» | 8. 블록 클린아웃 | 휘휘 | 2010.05.30 | 12492 |
57 |
11. Shared Pool
![]() | 실천하자 | 2010.05.30 | 18711 |
56 |
5. Undo
![]() | 토시리 | 2010.05.30 | 18919 |
55 | 1. 트랜잭션 동시성 제어 | 실천하자 | 2010.05.30 | 8814 |
54 |
6. 문장수준 읽기 일관성
![]() | 토시리 | 2010.05.31 | 10594 |
53 | 2장. 트랜잭션과 Lock | 운영자 | 2010.06.01 | 7066 |
52 | 1. Explain Plan | 실천하자 | 2010.06.06 | 14890 |
51 | 2. AutoTrace | 실천하자 | 2010.06.06 | 8781 |
50 | 3장. 오라클 성능 관리 | 운영자 | 2010.06.06 | 6872 |
49 |
3. SQL 트레이스
![]() | balto | 2010.06.06 | 21384 |
48 | 4. DBMS_XPLAN 패키지 | balto | 2010.06.06 | 10619 |