Library Cache란?
- SQL 을 수행하게 되면 , 그 SQL 에 관련된 정보를 저장하는 곳이 필요하다 , (어떤 테이블에 접근하고, 권한은 어떻게 되며, plan이 저장된 메모리 위치는 어디인지 등등 )
- Storage 상에 System Tablespace에 존재하겠지만 어떤 테이블에 저장되는지 궁금하다 ..
Lirary Cache - SQL Hash
- SQL의 Hash값으로 저장되어야 할 Hash Bucket이 선정 된다
- Hash Bucket에는 각 SQL Hash 값에 따른 SQL정보가 어디에 있는지를 알려준다
- Hash Bucket이 가르키는 LCO로 가면 해당 SQL의 정보를 찾을 수 있다
LCO는 어떻게 구성이 되어 있을까
LCO 는 Library Cache Object로 SQL을 수행하기 위한 여러 정보들이 저장되어있는 Object이다
LCO의 구성
1. Child Table :
기본적으로는 하나의 Parent LCO 에는 하나의 child LCO에 있다
- ex)
SQL#1 ---- schema : Lee --- SQL> select * from customer where id = :a1;
SQL#2 ---- schema : Cho --- SQL> select * from customer where id = :a1;
SQL 은 동일한데 1.스키마가 다르고(완전히 다른 테이블) 2.:a1 변수의 data type 도 다를 경우 (SQL#1 은 integer , SQL#2는 char)
두개는 동일한 SQL이지만 다른 정보이기에 2개의 Child 가 생성된다
2. Dependency Table :
해당 SQL이 참조하는 Object들이 저장되어있다. (Index, Table, View , Procedure, Package, Trigger)
3. Data Blocks :
실제 SQL 및 실행계획 관련 메모리 포인터
** 오래되거나 Invalid 된 LCO는 SQ Aging out이 된다
Lock은 왜 잡히는 걸까?
DDL이 수행되면 DDL에 관련된 LCO가 변경 또는 삭제(invalid)가 된다 . 그러면서 LCO에대한 Locking 작업이 진행된다
'DBMS > Oracle' 카테고리의 다른 글
[Oracle] AWR- report HTML 형식으로 보는 법 (0) | 2024.05.17 |
---|---|
[Oracle] AWR 이란? AWR Report 생성하는 법 (0) | 2024.05.16 |
[Oracle] Wait Event - Log Buffer Space , Log File Switch Completion, Log File Switch란? (0) | 2024.05.15 |
[Oracle] Wait Event - Log File Sync, Log File Parallel Write 란? (0) | 2024.05.15 |
[Oracle] Wait event - Free Buffer Waits , db file parallel write, write complete waits (0) | 2024.05.15 |