- SQL Trace 활성화/비활성화
- 어느 세션에서 실행되는지 관계없이 트레이스 활성화/비활성화 가능
- DBMS_MONITOR 패키지 사용시 10046 디버깅 이벤트 레벨을 직접 지정하지 않음.
- DBA권한/롤이 있어야만 DBMS_MONITOR 패키지 실행가능
세션 레벨
틀:알림
특정 세션에서 SQL Trace 활성화
- 디폴트는 레벨 8 과 같음
- session_id 와 serial_num 미지정시 PL/SQL 호출을 실행 세션이 트레이스 활성화됨.
dbms_monitor.session_trace_enbale(
session_id => 123
, serial_num => 45
, waits => TRUE -- default TRUE
, binds => TRUE -- default FALSE
, plan_stat => 'first_execution' -- default NULL
)
특정 세션에서 SQL Trace 비활성화
dbms_monitor.session_trace_disable(
session_id => 123
, serial_num => 45
)
클라이언트 레벨
- 특정 클라이언트에서 SQL Trace 활성화/비활성화
클라이언트 레벨 SQL Trace 활성화
- dbms_monitor.client_id_trace_enable
- client_id 속성에 선언된 모든 세션이 레벨12로 활성화 됨
dbms_monitor.client_id_trace_enable(
client_id => 'Orange' -- 대소문자 구분에 주의
, waits => TRUE -- default TRUE
, binds => TRUE -- default FALSE
, plan_stat => 'first_execution' -- default NULL
)
클라이언트 레벨 트레이스 활성화 상태 조회
select primary_id as client_id
, waits
, binds
, plan_stats
from dba_enabled_traces
where trace_type = 'CLIENT_ID';
클라이언트 레벨 SQL Trace 비활성화
dbms_monitor.client_id_trace_disable(
client_id => 'Orange' -- 대소문자 구분에 주의
)
컴포넌트 레벨
- module name ,action name 등의 컴포넌트 레벨 SQL Trace 활성화/비활성화
- service_name,action_name,module_name,instnace_name 은 대소문자 구분에 주의
- 설정시 데이터 딕셔너리에 저장됨으로 인스턴스 재기동해도 설정은 유지 됨에 주의
컴포넌트 레벨 SQL Trace 활성화
dbms_monitor.serv_mod_act_trace_enable(
service name => 'DBCAFE.co.kr'
, action_name => 'myaction'
-- , module_name => ‘’ -- action_name 설정시 반드시 설정 해야함 (안하면 ORA-13859 발생)
, waits => TRUE
, binds => TRUE
, instance_name => NULL -- RAC환경에서 instance_name 미지정시 모든 인스턴스에서 트레이스 활성화됨에 주의
, plan_stat => 'all_executions'
)
컴포넌트 레벨 SQL Trace 활성화 상태 조회
select primary_id as service_name
, qualifier_id1 as module_name
, qualifier_id2 as action_name
, waits
, binds
, plan_stats
from dba_enabled_traces
where trace_type in ('SERVICE','SERVICE_MODULE','SERVICE_MODULE_ACTION');
컴포넌트 레벨 SQL Trace 비활성화
dbms_monitor.serv_mod_act_trace_disable(
service name => 'DBCAFE.co.kr'
, action_name => 'myaction'
-- , module_name => ‘’ -- action_name 설정시 반드시 설정 해야함 (안하면 ORA-13859 발생)
, instance_name => NULL -- RAC환경에서 instance_name 미지정시 모든 인스턴스에서 트레이스 활성화됨에 주의 . v$instance 에서 instance_name 값
)
데이터베이스 레벨
- 데이터베이스에 접속하는 모든세션에 대해 SQL Trace 활성화/비활성화
- instnace_name 은 대소문자 구분에 주의
- 설정시 데이터 딕셔너리에 저장됨으로 인스턴스 재기동해도 설정은 유지 됨에 주의
데이터베이스 레벨 SQL Trace 활성화
dbms_monitor.database_trace_enable(
waits => TRUE
, binds => TRUE
, instance_name => 'ORCL' -- RAC환경에서 instance_name 미지정시 모든 인스턴스에서 트레이스 활성화됨에 주의. v$instance 에서 instance_name 값
, plan_stat => 'first_execution'
)
데이터베이스 레벨 SQL Trace 활성화 상태 조회
select instance_name
, waits
, binds
, plan_stats
from dba_enabled_traces
where trace_type ='DATABASE'
데이터베이스 레벨 SQL Trace 비활성화
dbms_monitor.database_trace_disable(
, instance_name => 'ORCL' -- RAC환경에서 instance_name 미지정시 모든 인스턴스에서 트레이스 활성화됨에 주의. v$instance 에서 instance_name 값
, plan_stat => 'first_execution'
)