Shared Pool
Java Pool
Large Pool
Streams Pool
Row Cache
라고도 불린다. ✅ shared pool latch
- shared pool에서 특정 object 정보 혹은 SQL 커서를 위한 free chunk 할당 받을 때 필요하다.
- 동시 사용자가 순간적으로 과도한 "하드파싱" 부하를 일으킨다면 shared pool latch에 대한 경합 현상이 발생할 수 있다.
- 9i 이전 : 하나의 shared pool latch로 전체 관리하였다.
- 9i 이후 : shared pool을 여러 개의 sub pool로 나누어 관리할 수 있게되면서 latch도 7개까지 사용이 가능하게 되었다.
✅ schema object information
- 저장 포맷이 다르지만 data dictionary cache에도 저장된다.
✅ Handle(= Library cache Handel)
- Library cache object(LCO)를 관리한다.
- 실제 정보가 있는 LCO에 대한 메타정보 및 위치값을 저장한다.
- SQL은 SQL 텍스트를 상수로 변환해서 bucket이 되며 "Child LCO"가 존재한다.
- SQL 이외 정보들(table, view etc)은 "user + object name + DB link"를 상수로 변환해서 bucket이 되며 "Child LCO"가 없다.
Object가 존재하지 않을 때
- Library Cache Manager는 주어진 이름으로 Empty Object 생성
- 생성된 Empty Object를 Hash Table에 포함시킨다.
- 오라클 프로세스에게 해당 Object를 로드하도록 요청한다.
- 오라클 프로세스가 해당 Object를 디스크에서 읽어, Heap Manager에 의해 새로이 할당된 메모리에 올려놓는다.
- 해당 Object를 사용한다.
✅ Bucket List에서 같은 문장을 발견하였지만 서로 다른 Version 존재 가능성이 있는 경우
SQL 문은 같지만 다음과 같은 경우는 서로 다른 버전으로 존재하며 공유되지 않는다.
- 서로 다른 유저의 Object를 사용한 경우
- 바인드 변수 데이터 타입이 다른 경우
- 서로 다른 Application 정보를 사용하는 경우
latch :: library cache
로 표기된다.SESSION_CACHED_CURSORS
파라미터에 의해 결정된다.