오라클 성능 트러블슈팅의 기초 (2012년)
OraSRP 0 0 36,799

by 구루비스터디 OraSRP TKPROF [2023.09.07]


OraSRP

  • Download :http://www.oracledba.ru/orasrp/
  • Linux,Windows,Mac 버전만 제공
  • OraSRP는 Extended SQL *Trace, 즉 10046 Event에 의해 생성된 트레이스 정보에 대한 상세한 리포트를 제공하는 역할을 한다.
  • OraSRP는 TKPROF의 단점을 보완한 보다 완전한 형태의 리포트를 제공한다.


TKPROF 단점
  • 특정 SQL이 어떤 재귀 SQL(Recursive SQL)을 호출하는지에 대한 정보를 제공하지 않는다.
  • 모든 정보가 합계(Summary)형태로 제공되기 때무에 동일한 쿼리가 여러번 실행되는 경우 개별 SQL의 성능 정보를 조회할 수 없다.


예제)

  • 1. 파스작업을 반복적으로 수행하는 SQL스크립트
 

--orasrp_temp.sql
declare
v_cnt number;
begin
for idx in 1 .. 10000 loop
execute immediate
'select count(*) from user_objects where ' || mod(idx,100) ||'  =   ' ||mod(idx,10) into v_cnt;
end loop;
end;
/


  • 2. 5개의 세션에서 동시에 실행


ho sqlplus system/manager @orasrp_temp &
ho sqlplus system/manager @orasrp_temp &
ho sqlplus system/manager @orasrp_temp &
ho sqlplus system/manager @orasrp_temp &
ho sqlplus system/manager @orasrp_temp &

-- ho : 임시로 dos 모드로 변경


  • 3. 현재 세션에서 레벨8의 10046이벤트, 즉 대기 이벤트가 폼함된 SQL 트레이스를 활성화하고 역시 동일한 orasrp_temp.sql 파일을 수행한다.
  • 총 6개의 세션이 동일한 패턴의 sql문장을 동시 다발적으로 실행하기 때문에 라이브러리 캐시 영역에서 상당한 경합이 발생할 것으로 예상할수 있다.


alter session set events  '10046 trace name context forever , level 8';

@orasrp_temp

alter session set events '10046 trace name context off';


  • 4. 트레이스 파일 확인

@trace_file -- 현재세션의 트레이스 파일 확인
select r.value || case when d.platform_name like 'M%' then'\'else '/' END|| 
lower(t.instance_name) || '_ora_' 
||ltrim(to_char(p.spid)) || '.trc' trace_file 
from v$process p,v$session s, v$parameter r, v$instance t, v$database d
where p.addr =s.paddr 
and r.name ='user_dump_dest' 
and s.sid =(select sid from v$mystat where rownum = 1) ;


TRACE_FILE
--------------------------------------------------------------------------------
/oracle/app/oracle/admin/SCTEST/udump/sctest_ora_26959.trc



  • 5. OraSRP에 대한 도움말

[oracle@sctest orasrp]$ ./orasrp -h
usage:  orasrp [options] trcfile [outfile]
options:
  -h, --help            show this help message and exit
  --version             show program's version number and exit
  -t, --text            output in text format
  --aggregate=YES/no    aggregate similar statements
  -bn, --binds=n        how many unique bind-sets to display (1 by defaut)
  -c, --config          specify config file
  --maxbinds=n          how many unique bind-sets to analyze (all by default)
  --recognize-idle-events=YES/no
                        recognize or not idle wait events 
  --sys=YES/no          print sys statements
  --sort                how to sort statements in output (values like in tkprof)
  -s, --server          run httpd mode
  -p, --port            listen on alternate port (in httpd mode)
  -r, --remote          connect to remote machine:port
  --display-sections    what sections of report to display (all by default)
  --skip-sections       what sections of report to skip
  --sessionid           analyze data only for the specified session id
  --threshold           omit statements which spend less than threshold % from total time (not used by defaut)
  --google-charts       display charts using Google Chart API


  • 6. 리포트 생성

SQL> ho ./orasrp --sys=no &trace_file orasrp.html
Enter value for trace_file: /oracle/app/oracle/admin/SCTEST/udump/sctest_ora_26959.trc


<결과>
  • 다음과같이 요약정보가 출력된다.


  • 그리고 DPU사용 및 대기 이벤트에 대한 프로파일 정보를 볼 수 있다.
  • TKPROF가 제공한느 정보에 비해 훨씬 입체적이고 다양한 정보가 제공된다.


  • 위에서 제시한 CPU 자원과 대기 이벤트별로 어떤 SQL문장이 어느정도의 비중을 차지하는지 일복 요연하게 볼 수 있다.
  • 이 역시 TKPROF 리포트에는 없는 매우 유용한 정보이다.


  • library cache : mutex x => 11g에서 나옴


  • 그리고 각 SQL 별로 재귀 SQL 의 분포를 보여준다.


  • 레벨 8에 의하 대기 이벤트 정보가 기록되었기 때문에, 각 대기 이벤트별로 히스토그램정보를 보여준다. 이역시 너무나 유용한 정보이다.
  • library cache : mutex X
  • 그리고 각 SQL별로 상세한 프로파일링 정보를 보여준다. TKPROF 리포트와 거의 유사한 정보이지만, 훨씬 더 입체적이고 다양한 방식으로 데이터를 보여준다.
"데이터베이스 스터디모임" 에서 2012년에 "오라클 성능 트러블슈팅의 기초 " 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/4318

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입