| 분류 | 래치(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 |