DBA가 되고 싶은 병아리
대기 이벤트인 10046 진단이벤트 본문
Oracle 11g에서 대기 이벤트가 포함된 10046 진단 이벤트를 실행하는 방법을 정리해봤습니다.
1. 전통적인 10046 진단 이벤트 사용법은 다음과 같습니다. 레벨 8 이상이면 대기 이벤트가 기록됩니다.
1 |
alter session set events '10046 trace name context forever, level 8' ; |
2 |
|
3 |
select /* 10046 */ count (*) from user_objects; |
4 |
|
5 |
alter session set events '10046 trace name context off' ; |
01 |
-- sql_trace + level 8 |
02 |
alter session set events 'sql_trace level 8' ; |
03 |
|
04 |
select /* sql_trace_1 */ count (*) from user_objects; |
05 |
|
06 |
alter session set events 'sql_trace off' ; |
07 |
|
08 |
-- sql_trace + wait=true |
09 |
alter session set events 'sql_trace wait=true' ; |
10 |
|
11 |
select /* sql_trace_2 */ count (*) from user_objects; |
12 |
|
13 |
alter session set events 'sql_trace off' ; |
14 |
|
15 |
-- sql_trace + wait=true, bind=true |
16 |
alter session set events 'sql_trace wait=true, bind=true' ; |
17 |
|
18 |
select /* sql_trace_3 */ count (*) from user_objects; |
19 |
|
20 |
alter session set events 'sql_trace off' ; |
01 |
-- SQL_ID 얻어오고... |
02 |
select /* sql_trace_4 */ count (*) from user_objects; |
03 |
select /* sql_trace_5 */ count (*) from user_objects; |
04 |
|
05 |
col sql_id new_value sql_id1 |
06 |
select sql_id |
07 |
from v$sqlarea |
08 |
where sql_text = 'select /* sql_trace_4 */ count(*) from user_objects' ; |
09 |
|
10 |
col sql_id new_value sql_id2 |
11 |
select sql_id |
12 |
from v$sqlarea |
13 |
where sql_text = 'select /* sql_trace_5 */ count(*) from user_objects' ; |
14 |
|
15 |
-- 하나의 sql에 대해서 |
16 |
alter session set events 'sql_trace [sql: &sql_id1] wait=true' ; |
17 |
select /* sql_trace_4 */ count (*) from user_objects; |
18 |
select /* sql_trace_5 */ count (*) from user_objects; |
19 |
alter session set events 'sql_trace off' ; |
20 |
|
21 |
-- 여러 개의 sql에 대해서 |
22 |
alter session set events 'sql_trace [sql: &sql_id1 | &sql_id2] wait=true' ; |
23 |
select /* sql_trace_4 */ count (*) from user_objects; |
24 |
select /* sql_trace_5 */ count (*) from user_objects; |
25 |
alter session set events 'sql_trace off' ; |
1 |
exec dbms_monitor.session_trace_enable(waits=> true ); |
2 |
|
3 |
select /* dbms_monitor */ count (*) from user_objects; |
4 |
|
5 |
exec dbms_monitor.session_trace_disable; |
01 |
col sid new_value sid |
02 |
col serial# new_value se |
03 |
select sid, serial# |
04 |
from v$session |
05 |
where sid = userenv( 'sid' ); |
06 |
|
07 |
exec sys.dbms_system.set_ev(&sid, &se, 10046, 8, null ); |
08 |
|
09 |
select /* dbms_system */ count (*) from user_objects; |
10 |
|
11 |
exec sys.dbms_system.set_ev(&sid, &se, 10046, 0, null ); |
출처 : 조동욱님 티스토리
'Oracle Study > Admin I' 카테고리의 다른 글
SQL Dictionary의 정리 (0) | 2012.03.29 |
---|---|
테이블 용량 조사하는 쿼리 예시 (0) | 2012.02.03 |
IOT(INDEX ORGANIZED TABLE) 란? (0) | 2011.09.05 |
exp 백업 날짜 붙여서 (0) | 2011.08.04 |
ora-29861의 오류로 인한 인덱스 구성 실패 (0) | 2011.07.28 |