제17장 Tibero Performance Repository

내용 목차

17.1. 개요
17.2. TPR 사용법
17.2.1. tip 설정
17.2.2. 관련 테이블과 뷰
17.2.3. 수동 스냅샷 생성 기능
17.2.4. 리포트 작성 기능

본 장에서는 Tibero의 성능 진단을 위해서 제공되는 Tibero Performance Repository에 대해서 설명한다.

Tibero DBMS는 DBA가 성능 문제를 진단하는데 도움을 주기 위해 다양한 종류의 통계를 제공하고 있다. Tibero Performance Repository(이하 TPR)은 이러한 통계 정보를 주기적으로 자동 수집하여 DBA가 이를 위한 작업을 따로 할 필요가 없어졌고 수집한 통계 자료에 대한 자체적인 분석 리포트 출력 기능을 제공하여 시스템 부하 분석에 도움을 줄 수 있는 기능이다.

TPR은 다음의 주요 기능를 수행한다.

  • 스냅샷 저장 기능

    스냅샷 저장 기능은 _vt_jcntstat, v$system_event, v$sqlstats, v$sgastat 등 Tibero의 각종 성능 통계 정보를 주기적(보통 1시간)으로 테이블에 저장하여 둔다. 이렇게 저장된 정보를 스냅샷이라 부른다. 이렇게 저장해 놓은 스냅샷 정보를 이용하여 성능 분석 리포트를 만드는 기능을 제공한다. DBA는 특정 구간을 지정하여 리포트를 생성하고 이를 이용해 DB의 성능 문제를 진단할 수 있다.

  • 세션 상태 저장 기능

    세션 상태 저장 기능은 1초에 한번씩 현재 RUNNING 상태인 세션들의 ID와 대기 중인 이벤트 정보를 메모리에 저장해 둔다. 이렇게 저장해 놓은 정보는 v$active_session_history 뷰로 조회할 수 있다. 이 뷰를 이용해 DB의 성능 문제를 보다 세밀하게 진단할 수 있다. 단, 현재 세션 상태 저장 기능은 부하 상황에 취약할 수 있으므로 환경에 따라 주기를 더 늘리기를 권장한다.

저장한 스냅샷과 세션 상태는 관련 테이블과 뷰를 통해 확인할 수 있다. 7일이 지난 스냅샷과 세션 상태는 테이블에서 삭제된다.

  • 스냅샷 저장 기능

    테이블설명
    _TPR_SNAPSHOT저장된 스냅샷의 ID와 시간에 관한 정보를 관리한다.
    _TPR_BASELINE등록된 Baseline의 정보를 관리한다.
    _TPR_ACTIVE_SESSION_HISTORY저장된 ASH Sample 정보를 관리한다.
    _TPR_METRIC저장된 TPR Metric 정보를 관리한다.
    _TPR_JCNTSTAT_VT_JCNTSTAT 뷰의 스냅샷 정보를 관리한다.
    _TPR_SQLSTATSV$SQLSTATS 뷰의 스냅샷 정보를 관리한다.
    _TPR_SQL_PLANV$SQL_PLAN 뷰의 스냅샷 정보를 관리한다.
    _TPR_SQL_PLAN_STATV$SQL_PLAN_STATISTICS 뷰의 스냅샷 정보를 관리한다.
    _TPR_LATCHV$LATCH 뷰의 스냅샷 정보를 관리한다.
    _TPR_SYSTEM_EVENTV$SYSTEM_EVENT 뷰의 스냅샷 정보를 관리한다.
    _TPR_WAITSTATV$WAITSTAT 뷰의 스냅샷 정보를 관리한다.
    _TPR_SGASTATV$SGASTAT 뷰의 스냅샷 정보를 관리한다.
    _TPR_PGASTATV$PGASTAT 뷰의 스냅샷 정보를 관리한다.
    _TPR_LIBRARYCACHEV$LIBRARYCACHE 뷰의 스냅샷 정보를 관리한다.
    _TPR_SQLTEXTV$SQLTEXT 뷰의 스냅샷 정보를 관리한다.
    _TPR_FILESTATV$FILESTAT 뷰의 스냅샷 정보를 관리한다.
    _TPR_SEGMENTSTATV$SEGMENT_STATISTICS 뷰의 스냅샷 정보를 관리한다.
    _TPR_TEMPSEG_OP_USAGEV$TEMPSEG_OP_USAGE 뷰의 스냅샷 정보를 관리한다.
    _TPR_PROCESSV$PROCESS 뷰의 스냅샷 정보를 관리한다.
    _TPR_SESSIONV$SESSION 뷰의 스냅샷 정보를 관리한다.
    _TPR_WAITER_SESSIONV$WAITER_SESSION 뷰의 스냅샷 정보를 관리한다.
    _TPR_UNDOSTATV$UNDOSTAT 뷰의 스냅샷 정보를 관리한다.
    _TPR_OSSTAT2V$OSSTAT2 뷰의 스냅샷 정보를 관리한다.
    _TPR_SQLWA_HISTV$SQLWA_HIST 뷰의 스냅샷 정보를 관리한다.
    _TPR_MODIFIED_PARAM_VT_PARAMETER 테이블의 스냅샷 정보를 관리한다.
    _TPR_MISC세션 수와 같은 기타 정보의 스냅샷 정보를 관리한다.

    다음은 저장된 스냅샷의 ID와 시간에 관한 정보를 관리하는 '_TPR_SNAPSHOT' 테이블 정보이다.

    TABLE '_TPR_SNAPSHOT'
    -------------------------------------------------------------
    COLUMN_NAME                       TYPE             CONSTRAINT
    --------------------------------- ---------------- ----------
    SNAP_ID                           NUMBER
    THREAD#                           NUMBER
    INSTANCE_NUMBER                   NUMBER
    BEGIN_INTERVAL_TIME               DATE
    END_INTERVAL_TIME                 DATE
    SNAP_GID                          NUMBER
  • 세션 상태 저장 기능

    세션 상태 저장 주기에 활동 중인 세션들의 정보를 저장한다.

    테이블설명
    _TPR_ACTIVE_SESSION_HISTORY활동 중인 세션 상태 정보를 관리한다.
    V$ACTIVE_SESSION_HISTORY최근 1시간 동안의 세션 상태 정보를 관리한다.

    다음은 최근 1시간 동안의 세션 상태 정보를 관리하는 'V$ACTIVE_SESSION_HISTORY' 테이블 정보이다.

    VIEW 'V$ACTIVE_SESSION_HISTORY'
    ----------------------------------------------------------
    COLUMN_NAME                     TYPE           CONSTRAINT              
    ------------------------------- -------------- -----------
    SAMPLE_ID                       NUMBER
    THREAD#                         NUMBER
    SAMPLE_TIME                     DATE
    SID                             NUMBER
    SESS_SERIAL_NO                  NUMBER
    USER_NO                         NUMBER
    WAIT_EVENT                      NUMBER
    TIME_WAITED                     NUMBER
    SQL_ID                          VARCHAR(13)
    SQL_CHILD_NUMBER                NUMBER
    CURR_HASHVAL                    NUMBER
    MODULE_NAME                     VARCHAR(64)
    ACTION_NAME                     VARCHAR(64)
    CLIENT_INFO_NAME                VARCHAR(64)
    PROG_NAME                       VARCHAR(30)
    SQL_EXEC_START                  DATE
    SQL_EXEC_ID                     NUMBER
    SQL_PLAN_LINE_ID                NUMBER
    ID1                             NUMBER
    ID2                             NUMBER
    WE_SEQ                          NUMBER
    USGMT_ID                        NUMBER
    SLOTNO                          NUMBER
    WRAPNO                          NUMBER
    PORT                            NUMBER
    DELTA_TIME                      NUMBER
    DELTA_PHY_READ_BLKS             NUMBER
    DELTA_PHY_WRITE_BLKS            NUMBER
    DELTA_LOG_READ_BLKS             NUMBER
    PGA_SIZE                        NUMBER
    WAIT_OBJ_ID                     NUMBER
    WAIT_FILE_NO                    NUMBER
    WAIT_BLOCK_NO                   NUMBER
    WAIT_ROW_NO                     NUMBER

저장된 스냅샷과 세션 상태는 테이블과 뷰를 통해 직접 이용할 수도 있지만 보통은 이를 이용해 성능 분석 리포트를 만들게 된다. 현재 저장된 스냅샷 정보를 분석해 성능 분석 리포트를 만드는 기능은 구현되어 있다. 그러나 저장된 세션 상태 정보를 분석해 성능 분석 리포트를 만드는 기능은 구현되어 있지 않다.

스냅샷을 이용한 성능 분석 리포트 작성

_TPR_SNAPSHOT 테이블을 조회하여 원하는 기간에 대한 시작, 종료 시각을 확인한다.

다음은 원하는 기간의 시작과 종료 시점을 각각 begin_date, end_date라고 설정한 경우 tbsql에서 다음과 같이 입력하여 성능 분석 리포트를 작성하는 예이다. _TPR_SNAPSHOT 테이블의 BEGIN_INTERVAL_TIME이 begin_date과 end_date 사이에 포함되는 모든 스냅샷들이 리포트로 출력된다.

/* exec dbms_tpr.report_text(begin_date, end_date) */
SQL> exec dbms_tpr.report_text('2013-01-01 13:00:00', '2013-01-01 14:59:00');

성능 분석 리포트는 다음의 경로에 파일로 생성된다.

$TB_HOME/instance/$TB_SID/tpr_report.{mthr_pid}.{current_time}

성능 분석 항목

다음은 성능 분석 항목에 대한 설명이다.

  • Overview Part

    • System Overview

      • CPU Usage

      • Memory Usage

    • Workload Overview

      • Workload Summary

      • Workload Stats

    • Instance Overview

      • Instance Efficiency

      • TAC Statistics Overview (Cluster Cache Activity, Cluster Buffer Cache, Cluster Cache and Wait Lock Statistics)

      • Top 5 Wait Events by Wait Time

      • I/O Overview

    • SQL Overview

      • PGA Work Area Statistics

      • Top 3 SQL Ordered by Elapsed Time

      • Top 3 SQL Ordered by Executions

      • Top 3 SQL Ordered by Gets

  • Detail Part

    • System Detail

      • OS Statistics

      • Shared Pool Statistics

      • Physical Plan Cache Statistics

      • Data Dictionary Cache Statistics

      • PGA Statistics

    • Workload Detail

      • Workload Stats (Time-based)

      • Workload Stats (Number-based)

      • Workload Stats (Size-based)

    • Instance Detail

      • Buffer Cache Statistics

      • Wait Event Summary (by Class)

      • Wait Events by Wait Time

      • Session Status with Wait Event

      • Blocking Session Status with Wait Event

      • Wlock Statistics

      • Spinlock(Latch) Statistics

      • Spinlock(Latch) Sleep Statistics

      • Tablespace I/O Statistics

      • File I/O Statistics

      • Temp Segment Usage Statistics

      • Segments Ordered by Physical Reads ("TPR_SEGMENT_STATISTICS=Y"로 설정할 경우)

      • Segments Ordered by Logical Reads ("TPR_SEGMENT_STATISTICS=Y"로 설정할 경우)

      • Segments Ordered by ITL Waits ("TPR_SEGMENT_STATISTICS=Y"로 설정할 경우)

      • Segments Ordered by Buffer Busy Waits ("TPR_SEGMENT_STATISTICS=Y"로 설정할 경우)

      • Segments Ordered by Row Lock Waits ("TPR_SEGMENT_STATISTICS=Y"로 설정할 경우)

      • Undo Statistics

      • Wait Statistics ("_DB_BLOCK_PIN_WAIT_USE_STAT=Y"로 설정할 경우)

    • SQL Detail

      • PGA Summary

      • PGA Work Area Histogram

      • SQL Ordered by Elapsed Time (with Physical Plan)

      • SQL Ordered by Elapsed Time/Execution (with Physical Plan)

      • SQL Ordered by Executions (with Physical Plan)

      • SQL Ordered by Gets (with Physical Plan)

      • SQL Ordered by Reads (with Physical Plan)

      • SQL Ordered by Extra I/O (with Physical Plan)

      • SQL Ordered by CPU (with Physical Plan)

  • Etc

    • Tibero Init. Parameters(.tip)

    • Modified Parameters