LOB
LOB의 일관성 처리방법
- LOB값이 Row내에 저장된다면 다를 것이 없다.
- LOB값이 Row외부에 저장된다면 일반적인 언두/리두방법을 따를 필요가 없다.
LOB값이 Row외부에 저장 시 액세스
- Row내 저장된 포인터나 LOBINDEX를 이용하여 액세스하며
- LOBINDEX는 b-tree인덱스의 특별한 형태로 전형적인 리두/언두처리를 한다.
LOB값이 Row외부에 저장 시 처리
- 오라클은 새로운 값을 저장하며 또한 이전 값을 LOB내에 남겨둔다.
- 이전 값은 언두이며, 이 값의 보관주기를 정의할 수 있다.(PCTVERSION)
- 새로운 값이 생성되면 LOBINDEX의 신규/이전 두 부분을 변경해야 하는데
- 새로운 값이 저장된 위치를 설정하는 부분과 이전 값들의 순서를 제어하기 위한 부분이다.
ORA-022924
LOB을 트랜잭션 시 읽기일관성처리 중 인덱스블록의 올바른 버전을 찾게 되면 해당 버전이 가르키는 LOB값이 적절한지 알아야 하며, 만약 이 값이 존재하지 않는다면 LOB의 "Snapshot too old"버전인 ORA-022924이 발생한다.