Data Base/SQL 튜닝

Library Cache Pin _ procedure 생성 후 library cache pin 확인

잇꼬 2024. 2. 5. 22:05
728x90
반응형
SMALL

■ Library Cache Pin

- SQL문장이나 PL/SQL 객체를 고정하여 여러 session에서 공유되는 것을 보장하는 lock이다. 이는 공유 자원에 대한 동시 접근을 통제하여 데이터베이스의 일관성과 무결성을 유지하는 데 사용한다. 

 

1. SQL문 hard parsing

▶ library cache pin을 exclusive mode 획득한다. 

- SQL문장이 처음 parsing 될때 해당 SQL 문장을 다른 session이 변경하지 못하도록 보호한다.

 

2. SQL문 execute 단계

▶ library cache pin을 shared mode 획득한다.

- 다른 session에서 동시에 동일한 SQL문장을 실행 할 수 있도록 한다.

 

3. SQL문 fetch 단계 

library cache pin을 해제한다.

 

4. procedure(function, package) 실행 단계

library cache pin을 shared mode 획득한다.

- 해당 객체를 실행하는 동안 다른 session이 변경하지 못하도록 보호한다.

 

5. ALTER procedure(function, package) complie 단계 (수정 및 컴파일)

library cache pin을 exclusive mode 획득한다.

- 객체의 구조를 변경하기 위한 lock으로 컴파일이 완료되면 pin이 해제된다.

 



<sys session>
#) 권한 생성

grant execute on dbms_lock to hr;


<hr session> 

create or replace procedure pin_proc(p_time in number)
is
begin
        dbms_lock.sleep(p_time);
end;
/


<hr session>

<sess_1>

execute dbms_application_info.set_client_info('sess_1')

 

<sess_2>

execute dbms_application_info.set_client_info('sess_2')


<sys session>

select client_info, sid, blocking_session, event 
from v$session 
where client_info in ('sess_1', 'sess_2');

 

select client_info, sid, blocking_session, event 
from v$session_wait 
where sid in (16, 25);


<hr session_1>

execut pin_proc(100)


<hr session_2>

alter procedure pin_proc compile;


<sys session>

select sid, event, wait_class, wait_time, seconds_in_wait, state 
from v$session_wait 
where sid in (16, 25);


<sys session_2>

select sid, event, total_waits, time_waited 
from v$session_event 
where sid in (16, 25);

 

728x90
반응형
LIST