다음 스크립트를 실행하기 전에 SQL을 사용하여 AWR 보고서를 생성해야 합니다(프로그램 스크립트는 일반적으로 awrrpt.sql이라는 이름의 $ORACLE_HOME 아래 rdbms/admin에 저장되며 AWR을 생성할 날짜 범위를 입력해야 합니다) 보고서) 시작 및 종료 스냅샷 번호: Begin_snap 및 end_snap을 찾습니다.
라인 1000 설정
라인 크기 200 설정
페이지 크기 2000 설정
긴 999999 설정
에코 설정
마크업 html 설정
res 선택.*
from (to_char(d.end_interval_time,'yyyy-mm-dd'),
a.PARSING_SCHEMA_NAME,
c.MODULE,
a.sql_id,
a.execs를 실행 횟수로 선택,
ROUND(a.cpu_times / a.execs, 2)는 단일 실행 시간,
a.cpu_times는 CPU 소비 시간,
ROUND(a.cpu_times / b.sum_time * 100, 2)는 CPU입니다. 소비 비율,
a.buffer_gets(논리적 읽기),
ROUND(a.buffer_gets / b.sum_buffer * 100, 2)(논리적 읽기 비율),
a.disk_read(물리적 읽기),
ROUND( a.disk_read / b.sum_disk * 100, 2) 물리적 읽기 비율,
c.sql_fulltext
from (select PARSING_SCHEMA_NAME,
sql_id,
sum(EXECUTIONS_DELTA) AS execs,
round (sum( CPU_TIME_DELTA) / 1000000, 2) AS cpu_times,
round(sum(ELAPSED_TIME_DELTA) / 1000000, 2) AS elapsed_time,
sum(BUFFER_GETS_DELTA) AS buffer_gets,
sum(DISK_READS_DELTA) AS disk_read
sys.WRH$_SQLSTAT wr, gv$instance i
여기서 SNAP_ID <= &end_snap
및 snap_id >= &begin_snap
및 wr.INSTANCE_NUMBER = i.INSTANCE_NUMBER
및 i.instance_number = &instance_number
PARSING_SCHEMA_NAME, wr.INSTANCE_NUMBER, sql_id) a,
(SELECT round(SUM(CPU_TIME_DELTA) / 1000000, 2) sum_time,
SUM(BUFFER_GETS_DELTA) sum_buffer,
sum(DISK_READS_DELTA)으로 그룹화 ) sum_disk
FROM sys.WRH$_SQLSTAT wr, gv$instance i
여기서 SNAP_ID <= &end_snap
및 snap_id >= &begin_snap
및 wr.INSTANCE_NUMBER = i.INSTANCE_NUMBER
그리고 i.instance_number = &instance_number) b,
v$sqlarea c,
dba_hist_snapshot d
여기서 a.execs > 0
및 a.sql_id = c.sql_id
및 a.PARSING_SCHEMA_NAME < ;> 'SYS'
및 d.snap_id = &end_snap
CPU 시간 소비에 따른 순서 설명) res
여기서 rownum
exit
스크립트 출력 내용을 Notepad txt로 저장하고 Notepad의 접미사 이름을 .html로 변경하여 다음 웹페이지 내용을 출력할 수 있도록 합니다.