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
'Data Base > SQL 튜닝' 카테고리의 다른 글
Shared Pool Latch, library cache latch (1) | 2024.02.05 |
---|---|
Library Cache Pin _ procedure 생성 후 library cache pin 확인 (0) | 2024.02.05 |
Library Cache Lock _ 같은 session에서 procedure 실행 후 wait event 확인 (0) | 2024.02.05 |
Invalidations(무효화) 발생하는 경우 (0) | 2024.02.03 |
shared pool _ select문의 실행 계획 (1) | 2024.02.03 |