행위

DBMS MONITOR 패키지

DB CAFE

thumb_up 추천메뉴 바로가기


1 DBMS_MONITOR 패키지[편집]

  1. SQL Trace 활성화/비활성화
  2. 어느 세션에서 실행되는지 관계없이 트레이스 활성화/비활성화 가능
  3. DBMS_MONITOR 패키지 사용시 10046 디버깅 이벤트 레벨을 직접 지정하지 않음.
  4. DBA권한/롤이 있어야만 DBMS_MONITOR 패키지 실행가능

1.1 세션 레벨[편집]

assignment NOTE
  • V$SESSION 뷰의 sql_trace,sql_trace_wait,sql_trace_binds,sql_trace_plan_stats 컬럼으로 확인 가능
  • RAC 환경에서는 해당 인스턴스에서 실행해야 함.

1.1.1 특정 세션에서 SQL Trace 활성화[편집]

  1. 디폴트는 레벨 8 과 같음
  2. 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
)

1.1.2 특정 세션에서 SQL Trace 비활성화[편집]

dbms_monitor.session_trace_disable(
   session_id => 123
 , serial_num => 45
)

1.2 클라이언트 레벨[편집]

  • 특정 클라이언트에서 SQL Trace 활성화/비활성화

1.2.1 클라이언트 레벨 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
)

1.2.2 클라이언트 레벨 트레이스 활성화 상태 조회[편집]

select primary_id as client_id
     , waits
     , binds
     , plan_stats
  from dba_enabled_traces
 where trace_type = 'CLIENT_ID';

1.2.3 클라이언트 레벨 SQL Trace 비활성화[편집]

dbms_monitor.client_id_trace_disable(
   client_id => 'Orange' -- 대소문자 구분에 주의 
)

1.3 컴포넌트 레벨[편집]

  • module name ,action name 등의 컴포넌트 레벨 SQL Trace 활성화/비활성화
  • service_name,action_name,module_name,instnace_name 은 대소문자 구분에 주의
  • 설정시 데이터 딕셔너리에 저장됨으로 인스턴스 재기동해도 설정은 유지 됨에 주의

1.3.1 컴포넌트 레벨 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'
)

1.3.2 컴포넌트 레벨 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');

1.3.3 컴포넌트 레벨 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 값 
)

1.4 데이터베이스 레벨[편집]

  • 데이터베이스에 접속하는 모든세션에 대해 SQL Trace 활성화/비활성화
  • instnace_name 은 대소문자 구분에 주의
  • 설정시 데이터 딕셔너리에 저장됨으로 인스턴스 재기동해도 설정은 유지 됨에 주의

1.4.1 데이터베이스 레벨 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'
)

1.4.2 데이터베이스 레벨 SQL Trace 활성화 상태 조회[편집]

select instance_name
     , waits
     , binds
     , plan_stats
  from dba_enabled_traces
 where trace_type ='DATABASE'

1.4.3 데이터베이스 레벨 SQL Trace 비활성화[편집]

dbms_monitor.database_trace_disable(
 , instance_name => 'ORCL'    -- RAC환경에서 instance_name 미지정시 모든 인스턴스에서 트레이스 활성화됨에 주의. v$instance 에서 instance_name 값 
 , plan_stat    => 'first_execution'
)