오라클/작업 script

오라클 현황확인(trace, awr report, wait event ..)

끄적끄적 2008. 12. 8. 11:28

* trace
--alter session set timed_statistics=true;
alter session set sql_trace=true;
alter session set sql_trace=false;

EXECUTE DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(123,1234,TRUE);
EXECUTE DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(123,1234,FALSE);
--EXEC DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(sid=>123, serial#=>1234, sql_trace=>TRUE);
--EXEC DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(sid=>123, serial#=>1234, sql_trace=>FALSE);

* 10046 trace( 0: 트레이스 안함, 1: 일반 trace, 4: 바인드변수값, 8: 대기이벤트, 12: 바인드변수 & 대기이벤트)
ALTER SESSION SET EVENTS '10046 trace name context forever, level 8';
ALTER SESSION SET EVENTS '10046 trace name context off';

EXECUTE DBMS_SYSTEM.SET_EV(123,1234,10046,8,'');
EXECUTE DBMS_SYSTEM.SET_EV(123,1234,10046,0,'');
--EXEC DBMS_SYSTEM.SET_EV(si=>123, se=>1234, ev=>10046, le=>8, nm=>’ ’);
--EXEC DBMS_SYSTEM.SET_EV(si=>123, se=>1234, ev=>10046, le=>0, nm=>’ ’);
 
* tkprof
 tkprof ora_11111.trc result.txt explain=scott/tiger aggregate=no sys=no sort=fchela

1) EXPLAIN : TKPROF 유틸리티 실행시의 실행 계획을 출력하기 위한 유저명/패스워드를 지정한다

2) SORT옵션 (지정한 옵션에 의해서 내림차순으로 sql가 출력, 이 외에도 다수의 옵션)
   exeela:실행시의 경과시간순서
   exedsk:실행시의 디스크 액세스 블록수순
   exeqry:실행시의 액세스 블록수순
   fchela:페치시의 경과시간순서
   fchdsk:페치시의 디스크 액세스 블록수순
   fchqry:페치시의 액세스 블록수순

로우/컬럼

설  명

Parse

 SQL문이 파싱되는 단계에 대한 통계.
 새로 파싱을 했거나 Shared SQL Pool에서 찾아 온 것도 같이 포함 됩니다.

Execute

 SQL문의 실행 단계에 대한 통계.
 Update, Insert, Delete문장들은 여기에 수행한 결과만 나옵니다.

Fetch

 SQL문이 실행되면서 페치된 통계.

count

 SQL문이 파싱/실행/페치가 수행된 횟수

cpu

 parse, execute, fetch가 실제로 사용한 CPU시간(1/100초 단위)

elapsed

 작업의 시작에서 종료시까지 실제 소요된 시간

 disk

 디스크에서 읽혀진 데이터 블럭의 수

 query

 메모리내에서 변경되지 않은 블럭을 읽거나 다른 세션에 의해 변경되었으나
 아직 커밋되지 않아 복사해 둔 스냅샷 블럭을 읽은 블럭 수
 SELECT문에서는 거의가 여기에 해당하며 Update,Insert,Delete작업시에는
 소량만 발생 합니다.

 current

 현 세선에서 작업한 내용을 커밋하지 않아 오로지 자신에게만 유효한
 블럭(Dirty Block)을 액세스한 블럭 수
 주로 Update, Insert, Delete작업시 많이 발생 합니다.

 rows

 SQL문을 수행한 결과에 의해 최종적으로 액세스된 로우의 수
 (서브쿼리에서 추출된 로우는 제외됩니다.)



* awr report
cd $ORACLE_HOME/rdbms/admin
SQL> @awrrpt

* sid로 수행시간 조회
select event, time_waited as time_spent
from   v$session_event
where  sid = &sid
and    event not in (        
    'Null event',
    'client message', 
    'KXFX: Execution Message Dequeue - Slave',
    'PX Deq: Execution Msg',        
    'KXFQ: kxfqdeq - normal deqeue',        
    'PX Deq: Table Q Normal',        
    'Wait for credit - send blocked',        
    'PX Deq Credit: send blkd',        
    'Wait for credit - need buffer to send',        
    'PX Deq Credit: need buffer',        
    'Wait for credit - free buffer',        
    'PX Deq Credit: free buffer',        
    'parallel query dequeue wait',        
    'PX Deque wait',        
    'Parallel Query Idle Wait - Slaves',        
    'PX Idle Wait',        
    'slave wait',        
    'dispatcher timer',        
    'virtual circuit status',        
    'pipe get',        
    'rdbms ipc message',        
    'rdbms ipc reply',
    'pmon timer',        
    'smon timer',        
    'PL/SQL lock timer',        
    'SQL*Net message from client',        
    'WMON goes to sleep')
union all
select b.name, a.value
from   v$sesstat a, v$statname b
where  a.statistic# = b.statistic#
and    b.name       = 'CPU used when call started'
and    a.sid        = &sid;


* buffer cache hit ratio
SELECT 1 - (phy.value / (cur.value + con.value) ) "CACHE HIT RATIO"
FROM v$sysstat cur, v$sysstat con, v$sysstat phy
WHERE cur.name = 'db block gets'
AND   con.name = 'consistent gets'
AND   phy.name = 'physical reads' ;



반응형