미스터 역마살

ORACLE AWR 리포트 출력 방법 본문

Database/ORACLE

ORACLE AWR 리포트 출력 방법

Mr. YeokMaSsal 2020. 1. 12. 10:35
728x90
반응형

 

Oracle DB의 상태의 진단할 때 많이 사용하는 정보가 AWR Report 입니다.

(AWR : Automatic Workload Repository)

 

원래 AWR 레포트를 사용하는 것 자체가 EM의 진단팩(Diagnostic Pack)을 사용하는 것이므로, EM 라이센스가 필요하다고 합니다. 하지만, ㅎㅎ 대부분 그냥 막 씁니다.

 

AWR 레포트 뽑는 방법은 매우 간단합니다.

진짜 어려운건 그 레포트를 보고 뭐가 문제인지 찾아내는 것이 어렵죠.

 

AWR 리포트를 출력하는 방법은 2가지가 있습니다.

1. SQL PLUS 명령어로 단계별로 진행하기

2. 쿼리를 SQL PLUS에서 실행시켜서 한번에 진행하기

 

전 이 두가지 방법중 1번을 주로 많이 사용하는데 일단은 2가지다 알려드릴게요.


1. SQL PLUS 명령어로 단계별로 진행하기

$ORACLE_HOME/rdbms/admin 디렉토리에 가보면, 아래와 같이 awr 로 시작하는 2개의 파일이 있습니다.

 

 

둘다 같은 놈인데, 뒤에 i 가 붙은 awrrpti.sql 은 RAC 에서 다른 노드(DB서버)의 레포트도 출력할 수 있는 점이 다릅니다.

awrrpt.sql 을 실행하면, 그냥 현재 로컬 DB 에서 awr report 를 출력하고,

awrrpti.sql 을 실행하면, 하는 방식은 awrrpt.sql 과 똑같은데, DB노드 선택하는 부분이 추가로 있습니다.

 

 

아래는 awrrpt.sql 실행하는 방법입니다.

 

 

AWR Report 를 출력할 디렉토리로 이동합니다.

현재 디렉토리에 AWR Report 파일을 만들기 때문에 $ORACLE_HOME/rdbms/admin 폴더에서 실행하면 거기에 파일이 만들어집니다. 거기는 오라클 파일님들이 거하시는 성스러운 곳이니 다른 장소에 만드는게 좋겠죠?

 

다른 TEMP 폴더 같은 곳으로 이동해서 sys 계정으로 sqlplus 접속합니다.

AWR Report 를 출력하기 위해서는 sys 나 system 계정 접속이 필요합니다.

 

@?/rdbms/admin/awrrpt.sql 와 같이 실행시켜 줍니다.

@는 run(실행) 의 의미입니다.

? (물음표)는 Oracle Home 디렉토리를 가리킵니다.

 

실행하면 현재 DB정보가 간단하게 나오고, report_type 을 물어봅니다.

html 과 text 가 있는데, text 는 보면 눈아프니까 다들 html 로 선택해서 PC로 옮겨서 브라우저로 보는 것이 일반적입니다.

 

 

 

num_days 값을 입력합니다. 표시할 스냅샷 일자를 말합니다.

기본으로 8일 입니다만, 수정할 수 있습니다.

8일치만 보관되어 있다해도 더 큰 값을 넣는다고 에러 안납니다.

있으면 나오고, 없으면 있는것만 나옵니다. 저는 30일 입력...

 

 

 

그러면, AWR 레포트 출력가능한 스냅샷 일자들이 쭈~욱 표시됩니다.

여기서 레포트를 출력할 시작일자(begin_snap)와 종료일자(end_snap)의 스냅샷 번호를 입력해줍니다.

저는 2019.07.22일 09:00 ~ 18:00 까지로 선택했습니다. 289~298

 

마지막으로 레포트 이름을 지정합니다.

특별히 입력해주지 않으면, 디폴트 이름 (awrrpt_1_289_298.html) 으로 파일이 만들어집니다.

저는 "TESTDB_awrpt_20190723.html" 이라고 이름을 주었습니다.

엔터를 치면 html 텍스트가 화면에 쭈~욱 출력되는데, 무시합니다.

같은 내용이 현재디렉토리에 파일로 만들어집니다.

 

sqlplus 를 종료하고 나오면, 현재 디렉토리에 만들어진 html 파일을 확인할 수 있습니다.

이 파일을 내 PC로 ftp 등으로 옮긴후, 브라우저에서 열어주면 아래와 같은 AWR Report 를 확인할 수 있습니다.

 

 

 


2. 쿼리를 SQL PLUS에서 실행시켜서 한번에 진행하기

/*
**  아래 SQL의 수행결과를 SQL Plus에 붙여넣을 것.
*/
WITH    WTH_HIST_SNAPSHOT
AS     (
        SELECT  B.DBID
              , A.STRT_SNAP_ID
              , A.END_SNAP_ID
        FROM   (
                SELECT  /*+ NO_MERGE */
                        MIN(SNAP_ID) AS STRT_SNAP_ID
                      , MAX(SNAP_ID) AS END_SNAP_ID
                FROM    DBA_HIST_SNAPSHOT
                WHERE   INSTANCE_NUMBER = 1
                AND     BEGIN_INTERVAL_TIME >= TRUNC( TO_DATE(:tr_dt) + 0 ) + 7/24
                AND     END_INTERVAL_TIME   <= TRUNC( TO_DATE(:tr_dt) + 1 ) + 9/24
               ) A
             , V$DATABASE B
       )
SELECT  'spool C:\Temp\awr_' || :tr_dt || '_inst' || B.INST_ID || '.txt' || CHR(10) || CHR(10) ||
        'set heading off' || CHR(10) || CHR(10) ||
        'SELECT  /* v$database 및 dba_hist_snapshot 에서 필요한 정보 조회할 것 */' || CHR(10) ||
        '        output' || CHR(10) ||
        'FROM    TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_TEXT(' || A.DBID || ', ' || B.INST_ID || ', ' || A.STRT_SNAP_ID || ', ' || A.END_SNAP_ID || ') );' || CHR(10) || CHR(10) ||
        'spool off' || CHR(10)
FROM    WTH_HIST_SNAPSHOT A
      ,(SELECT  LEVEL AS INST_ID
        FROM    DUAL
        CONNECT BY
                LEVEL <= 3
       ) B
ORDER BY
        B.INST_ID
;

 

 

 

이상입니다.

 

728x90

'Database > ORACLE' 카테고리의 다른 글

오라클을 설치 하였는데 오렌지에서 찾지 못하는 경우  (0) 2020.12.03
오렌지 ORA-12170 오류  (0) 2020.01.17
DBA HIST 관련 테이블  (0) 2020.01.12
[ORACLE] RAC  (0) 2016.08.08
[ORCLE] ORA-28002 오류 메세지 대처법  (0) 2016.08.07
Comments