분류 | 래치(latch) | 락(lock) |
---|---|---|
목적 | 메모리구조에 대한 베터적인 접근 | 1. 동일리소스 공유(호환O) 2. 배타적인 접근(호환X) |
사용범위 | SGA내부구조 | 데이타베이스 데이타 메타데이터 접근제어 트랜젝션 단위 |
획득방식 | 2가지 모드 | 6가지 모드 |
범위 | SGA 내부 | 데이터베이스 내부 |
복잡도 | 단순 | 복잡 |
지속기간 | 아주 짧은 순간 (microsecond 단위) | 일정시간 동안 지속 (트랜잭션 단위) |
큐(Queue) | Queue로 관리 안함 | Queue로 관리 |
DeadLock | 발생안함 | 발생함 |
분류기준 | 설명 | 조회 뷰 |
---|---|---|
Parent latch(부모래치) | 여러 개의 자식래치를 거느리는 래치 | V$LATCH_PARENT |
Solitary latch(독립래치) | 전체 인스턴스에 단 하나만 존재하는 래치 | |
Child latch(자식래치) | 부모래치에 속한 래치 | V$LATCH_CHILD |
V$LATCH | 모든 래치들의 통계에 대한 합계치 정보 |
---|---|
V$LATCH_MSSES | 래치 MISS가 발생한 커널코드의 영역에 대한 정보 |
latch: cache buffers chains | buffer cache 에서 특정 블록을 탐색하고자 하는 프로세스가 획득 |
---|---|
latch: cache buffers lru chains | buffer cache 에서 free buffer와 dirty buffer 를 탐색하고자 하는 프로세스가 획득 |
latch: shared pool | Shared Pool의 Heap 영역에서 새로운 Chunk를 할당받고자 하는 프로세스가 획득 |
latch: library cache | Library Cache 영역(TABLE,VIEW 등 SQL문수행관련모든정보 보관)을 탐색하고자 하는 프로세스가 획득 |
latch: redo copy | DML에 의한 변동사항을 Redo buffer에 기록하고자 하는 프로세스가 작업하는 동안 획득 |
latch | SGA 보호 |
---|---|
lock | 데이터베이스 전체 보호 |
Enqueue 락 | V$LOCK |
---|---|
일반 락 | V$SESSION_WAIT |
모드 | 설명 |
---|---|
0 | None |
1 | NULL(N) |
2 | Sub-Shared(SS) Row-Shared(RS) |
3 | Sub-Exclusive(SX) Row-Exclusive(RX) |
4 | Shared(S) |
5 | Shared-Sub-Exclusive(SSX) Shared-Row-Exclusive(SRX) |
6 | Exclusive(X) |
N | SS | SX | S | SSX | X | |
---|---|---|---|---|---|---|
N | O | O | O | O | O | O |
SS | O | O | O | O | O | X |
SX | O | O | O | | X | X |
S | O | O | | O | X | X |
SSX | O | O | X | X | X | X |
X | O | X | X | X | X | X |
V$LOCK |
---|
V$LOCKED_OBJECT |
V$ENQUEUE_LOCK |
DBA_WAITERS |
row cache lock |
---|
buffer busy waits |
read by other session |
library cache lock |
library cache pin |
DFS lock handle |