[Oracle] 오라클 성능정보 확인 레포트 (AWR Diff)

·2025년 9월 8일

오라클 관리

목록 보기
112/163

💡 AWR 비교(AWR Diff) 레포트가 필요한 이유

이상적인 DATABASE 상태와 성능이 안좋았을 때의 상태를
상대적으로 비교하기 용이한 레포트


[실습1] AWR 비교 레포트를 생성하시오

SYS @ ora19dw > @?/rdbms/admin/awrddrpt.sql

Specify the Report Type
~~~~~~~~~~~~~~~~~~~~~~~
Would you like an HTML report, or a plain text report?
Enter 'html' for an HTML report, or 'text' for plain text
Defaults to 'html'
report_type의 값을 입력하십시오: html


오렌지는 startup 타임이 같은거로 넣기


[문제] cursor_sharing 파라미터를 exact 로 해놓고 사진을 한번찍고, 하드 파싱을 과도하게 일으키고 끝나면 사진한번 찍고, cursor_sharing을 force 로 지정한 다음 다시 사진을 찍고, 하드 파싱을 과도하게 일으키고 사진을 찍고, 두 기간 간의 AWR 비교 레포트를 생성하시오

  1. SNAP ID 45
  2. 하드 파싱 유발
  3. SNAP ID 46
  4. CURSOR_SHARING =FORCE 후 db restart 하고
  5. SNAP ID 47
  6. 하드 파싱 유발
  7. SNAP ID 48

비교 레포트에 하드 파싱 지표가 높았는데 떨어졌다는게 보이면 됨


1. cursor_sharing 파라미터를 exact로 설정한 후, snapshot 찍기

SYS @ ora19dw > show parameter cursor_sharing

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
cursor_sharing                       string      EXACT
SYS @ ora19dw >
SYS @ ora19dw > exec dbms_workload_repository.create_snapshot;

PL/SQL 처리가 정상적으로 완료되었습니다.

2. 하드 파싱을 과도하게 일으키고 snapshot 찍기

SYS @ ora19dw > declare
  2  type rc is ref cursor;
  3  l_rc rc;
  4  l_dummy all_objects.object_name%type;
  5  l_start number default dbms_utility.get_time;
  6  begin
  7  for i in 1 .. 10000
  8  loop
  9  open l_rc for
 10
 11  'select object_name from all_objects where object_id = ' || i;
 12  fetch l_rc into l_dummy;
 13  close l_rc;
 14
 15  end loop;
 16  dbms_output.put_line ( round( (dbms_utility.get_time - l_start)/100, 2) || 'seconds');
 17  end;
 18  /

PL/SQL 처리가 정상적으로 완료되었습니다.


SYS @ ora19dw > exec dbms_workload_repository.create_snapshot;

PL/SQL 처리가 정상적으로 완료되었습니다.

3. cursor_sharing 파라미터를 force로 설정한 후, db를 restart 하고 snapshot 찍기

SYS @ ora19dw > alter system set cursor_sharing=force scope=both;

시스템이 변경되었습니다.


SYS @ ora19dw > startup force
ORACLE 인스턴스가 시작되었습니다.

Total System Global Area 2902454440 bytes
Fixed Size                  8900776 bytes
Variable Size             553648128 bytes
Database Buffers         2332033024 bytes
Redo Buffers                7872512 bytes
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.


SYS @ ora19dw > exec dbms_workload_repository.create_snapshot;

PL/SQL 처리가 정상적으로 완료되었습니다.

4. 다시 하드파싱 유발 후, snapshot 찍기

SYS @ ora19dw > declare
  2  type rc is ref cursor;
  3  l_rc rc;
  4  l_dummy all_objects.object_name%type;
  5  l_start number default dbms_utility.get_time;
  6  begin
  7  for i in 1 .. 10000
  8  loop
  9  open l_rc for
 10  'select object_name from all_objects where object_id = ' || i;
 11  fetch l_rc into l_dummy;
 12  close l_rc;
 13  end loop;
 14  dbms_output.put_line ( round( (dbms_utility.get_time - l_start)/100, 2) || 'seconds');
 15  end;
 16  /

PL/SQL 처리가 정상적으로 완료되었습니다.


SYS @ ora19dw > exec dbms_workload_repository.create_snapshot;

PL/SQL 처리가 정상적으로 완료되었습니다.

5. 오렌지의 AWR report에서 AWR Diff report 생성하기

0개의 댓글