Data Base/SQL 튜닝

Library Cache Lock_table 생성, 대량의 Data

잇꼬 2024. 2. 5. 21:47
728x90
반응형
SMALL

<<hr session>>
=> 새롭게 접속 후 진행하기

#) 대량의 data 로드 하기

create table hr.test(id number, name char(10));
insert into hr.test select rownum, lpad(rownum, 10, '0') from dual connect by level <= 1000000;
commit;


<<sess_1>> : HR 계정 

execute dbms_application_info.set_client_info('sess_1')
alter table hr.test modify name char(20);


<<sess_2>> : HR 계정 

execute dbms_application_info.set_client_info('sess_2')
select count(*) from hr.test;


<<sys_1>> 

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

 

#) 대기 이벤트 확인

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


<<sys_2>>

#) session별 대기 이벤트 확인 

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


#) 동시에 hr 계정에서 alter문+select문 실행
<sys_1>

→ 해당 쿼리문의 결과는 ' 순간의 정보' 이다! 

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

- log buffer space(wait event) / library cache lock


<sys_2>

→ 해당 쿼리문은 누적정보 (로그인부터 session이 로그아웃할때 까지의 정보)

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

 

redo log 문제 : log buffer space, log file switch completion, log file sync
블록 i/o 작업 많음 : db file sequential read, db file scattered read, db file single write

I/O 관련 : db file sequential read(싱글블록i/o), db file scattered read(멀티블록i/o), db file parallel read(여러블록i/o)

<sys_1>

#) session이 최근에 수행한 SQL 문장의 SQL_ID 확인 

select prev_sql_id from v$session where sid in (25, 148);

 

select sql_text from v$sql where sql_id = '67qv1fwhkjmh6';

=> alter문 확인되지 않음. 놓치는 경우가 있을 수 있다. 

 

select sql_text from v$sql where sql_id = '1mat065c25crk';


#) library cache 보는 위한 쿼리문
<sess_1>

alter table hr.test modify name char(30);


<sess_2>

select count(*) from hr.test;


<sys_1>

select
          h.sid,
          substr(s.sql_text, 1 , 40) as sql_text,
          k.kglhdnsp, K.kglnaobj,
          decode(k.kgllkmod, 3 , '3(X)', 2, '2(S)' , 1, '1(N)', k.kgllkmod) as lkmode
from sys.x$kgllk k,v$session_wait w, v$session h, v$sqlarea s
where w.event = 'library cache lock'
and h.saddr = k.kgllkuse
and h.sql_id = s.sql_id(+)
and k.kgllkhdl = ( case when w.p1raw like '00000000%' then substr(w.p1raw,9,8) else w.p1raw ||'' end)
and k.kgllkmod > 0;

728x90
반응형
LIST