[작업능률향상방안#2][DBMS_SYSTEM.KSDWRT 프로시저를 이용한 모니터링 방법]

작업효율향상방안 2008/11/19 12:15
DBMS 성능 모니터링을 수행하다보면 1초 혹은 지정된 인터벌 간격으로 주요 Stat들에 대한 모니터링을 수행해야 하는 경우가 있다. 이러한 경우 DBMS_SYSTEM.KSDWRT 프로시저를 이용해 출력 결과를 trace file (UDUMP 디렉토리)로 출력하는 방법이 있다.

아래의 프로시져는 3개의 주요 성능 지표에 대한 초단위 Delta 결과를 트레이스 파일에 출력하는 예제이다.

declare
  TYPE SysStatType IS TABLE OF v$sysstat%ROWTYPE
       INDEX BY PLS_INTEGER;
 
  sys_stat_res1 SysStatType;
  sys_stat_res2 SysStatType;

begin
  for i in 1..10000 loop
  for i in 1..3 loop
     select statistic#, name, class, value, stat_id
     into   sys_stat_res1 (i)
     from   (select rownum rnum, statistic#, name, class, value, stat_id
             from   v$sysstat
             where  name in ('session logical reads',
                             'physical reads',
                             'physical writes'))
     where  rnum=i;
  end loop;

  dbms_lock.sleep(1);

  for i in 1..3 loop
     select statistic#, name, class, value, stat_id
     into   sys_stat_res2 (i)
     from   (select rownum rnum, statistic#, name, class, value, stat_id
             from   v$sysstat
             where  name in ('session logical reads',
                             'physical reads',
                             'physical writes'))
     where  rnum=i;
  end loop;

  for i in 1..3 loop
     dbms_system.ksdwrt(1, to_char(sysdate,'YYYYMMDD:HH24:MI:SS')||' '||sys_stat_res2(i).name||'=>'||(sys_stat_res2(i).value-sys_stat_res1(i).value));
  end loop;

  end loop;
end;
/

Trackback 0 : Comment 0

[MyAnswer#3][INSERT 수행성능이 수행 시 마다 차이가 큰 경우의 체크리스트][난이도-최상]

퀴즈답안 2008/11/19 09:36

가장 난해한 성능분석 중의 하나는, 동일한 쿼리를 수행할 때마다, 수행 성능이 차이가 나는 원인을 파악하는 것이다. 수행 성능이 차이가 나는 이유는 수없이 많을 것이다. 따라서 이 문제는 스스로 겪었던 경험과 알고 있는 지식을 기반으로 최대한의 상상력을 동원해야 한다. 즉, 문제의 원인에 대한 가설을 세우고, 분석을 통해 가설을 검증하고, 가설이 기각될 경우에 새로운 가설을 세우고 분석하는 반복적인 과정이 필요하다. 이러한 과정을 통해 자신만의 분석 트리의 체계를 잡을 수 있게된다. 이러한 훈련은 단지 오라클의 성능 문제를 분석하는것 뿐 아니라, 살아가면서 닥치게 되는 문제들을 풀어나가는데도 도움이 되지 않을까 한다.

<< 퀴즈 환경  >>

  - Oracle 10.2.0.2
  - RAC 2 Node
  - 전형적인 Hybrid 시스템으로써, AM 09~ PM 06시에는 온라인 작업으로 인해 CPU 사용률이 높으며,
    새벽시간대에는 상대적으로 CPU 사용률이 낮음
  - 보다 많은 추론이 가능하도록 자세한 환경 정보 제공하지 않음

<< Quiz >>

INSERT .. SELECT /*+ PARALLEL (a 8)  PARALLEL( b 8) FULL(a) FULL(b) */... 작업이 짧게는 10분, 길게는 10시간이 수행된다. 일반적으로 새벽시간대에 수행되는 경우에는 빨리 수행되며, 업무시간대에는 상당히 느리게 수행된다. 그런데 새벽시간대라고 해도 항상 빨리 수행되는 것은 아니다.  INSERT 대상 테이블은 파티션이 적용되지 않은 테이블이다. 이러한 경우에 어떤한 체크리스트를 가지고, 분석을 할 것인가?


<< Quiz 답안>>

이번 답안은 회사 블로그에 올린 글로 대신합니다. ^^
http://exem.tistory.com/54 

tags : Oracle Quiz
Trackback 0 : Comment 0

[Bad to Good]

낙서장 2008/11/13 19:20

 

 

확대


tags : 낙서
Trackback 0 : Comment 1