태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

'ASH'에 해당되는 글 2건

  1. 2010.09.14 V$ACTIVE_SESSION_HISTORY (2)
  2. 2007.08.29 AWR 써야 하나 말아야 하나...

V$ACTIVE_SESSION_HISTORY

오라클 2010.09.14 15:19
오라클이 제공하는 Active Session History가 버전에 따라 얼마나 많은 개선이 이루어지는지 눈으로 확인해보시기 바랍니다.

Oracle 10.2.0.1

TPACK@ukja1021> desc v$active_session_history
           Name                            Null?    Type
           ------------------------------- -------- --------------

    1      SAMPLE_ID                                NUMBER
    2      SAMPLE_TIME                              TIMESTAMP(3)
    3      SESSION_ID                               NUMBER
    4      SESSION_SERIAL#                          NUMBER
    5      USER_ID                                  NUMBER
    6      SQL_ID                                   VARCHAR2(13)
    7      SQL_CHILD_NUMBER                         NUMBER
    8      SQL_PLAN_HASH_VALUE                      NUMBER
    9      FORCE_MATCHING_SIGNATURE                 NUMBER
   10      SQL_OPCODE                               NUMBER
   11      SERVICE_HASH                             NUMBER
   12      SESSION_TYPE                             VARCHAR2(10)
   13      SESSION_STATE                            VARCHAR2(7)
   14      QC_SESSION_ID                            NUMBER
   15      QC_INSTANCE_ID                           NUMBER
   16      BLOCKING_SESSION                         NUMBER
   17      BLOCKING_SESSION_STATUS                  VARCHAR2(11)
   18      BLOCKING_SESSION_SERIAL#                 NUMBER
   19      EVENT                                    VARCHAR2(64)
   20      EVENT_ID                                 NUMBER
   21      EVENT#                                   NUMBER
   22      SEQ#                                     NUMBER
   23      P1TEXT                                   VARCHAR2(64)
   24      P1                                       NUMBER
   25      P2TEXT                                   VARCHAR2(64)
   26      P2                                       NUMBER
   27      P3TEXT                                   VARCHAR2(64)
   28      P3                                       NUMBER
   29      WAIT_CLASS                               VARCHAR2(64)
   30      WAIT_CLASS_ID                            NUMBER
   31      WAIT_TIME                                NUMBER
   32      TIME_WAITED                              NUMBER
   33      XID                                      RAW(8)
   34      CURRENT_OBJ#                             NUMBER
   35      CURRENT_FILE#                            NUMBER
   36      CURRENT_BLOCK#                           NUMBER
   37      PROGRAM                                  VARCHAR2(64)
   38      MODULE                                   VARCHAR2(48)
   39      ACTION                                   VARCHAR2(32)
   40      CLIENT_ID                                VARCHAR2(64)
Oracle 11.2.0.1
TPACK@ukja1120> desc v$active_session_history
           Name                            Null?    Type
           ------------------------------- -------- ---------------

    1      SAMPLE_ID                                NUMBER
    2      SAMPLE_TIME                              TIMESTAMP(3)
    3      IS_AWR_SAMPLE                            VARCHAR2(1)
    4      SESSION_ID                               NUMBER
    5      SESSION_SERIAL#                          NUMBER
    6      SESSION_TYPE                             VARCHAR2(10)
    7      FLAGS                                    NUMBER
    8      USER_ID                                  NUMBER
    9      SQL_ID                                   VARCHAR2(13)
   10      IS_SQLID_CURRENT                         VARCHAR2(1)
   11      SQL_CHILD_NUMBER                         NUMBER
   12      SQL_OPCODE                               NUMBER
   13      SQL_OPNAME                               VARCHAR2(64)
   14      FORCE_MATCHING_SIGNATURE                 NUMBER
   15      TOP_LEVEL_SQL_ID                         VARCHAR2(13)
   16      TOP_LEVEL_SQL_OPCODE                     NUMBER
   17      SQL_PLAN_HASH_VALUE                      NUMBER
   18      SQL_PLAN_LINE_ID                         NUMBER
   19      SQL_PLAN_OPERATION                       VARCHAR2(30)
   20      SQL_PLAN_OPTIONS                         VARCHAR2(30)
   21      SQL_EXEC_ID                              NUMBER
   22      SQL_EXEC_START                           DATE
   23      PLSQL_ENTRY_OBJECT_ID                    NUMBER
   24      PLSQL_ENTRY_SUBPROGRAM_ID                NUMBER
   25      PLSQL_OBJECT_ID                          NUMBER
   26      PLSQL_SUBPROGRAM_ID                      NUMBER
   27      QC_INSTANCE_ID                           NUMBER
   28      QC_SESSION_ID                            NUMBER
   29      QC_SESSION_SERIAL#                       NUMBER
   30      EVENT                                    VARCHAR2(64)
   31      EVENT_ID                                 NUMBER
   32      EVENT#                                   NUMBER
   33      SEQ#                                     NUMBER
   34      P1TEXT                                   VARCHAR2(64)
   35      P1                                       NUMBER
   36      P2TEXT                                   VARCHAR2(64)
   37      P2                                       NUMBER
   38      P3TEXT                                   VARCHAR2(64)
   39      P3                                       NUMBER
   40      WAIT_CLASS                               VARCHAR2(64)
   41      WAIT_CLASS_ID                            NUMBER
   42      WAIT_TIME                                NUMBER
   43      SESSION_STATE                            VARCHAR2(7)
   44      TIME_WAITED                              NUMBER
   45      BLOCKING_SESSION_STATUS                  VARCHAR2(11)
   46      BLOCKING_SESSION                         NUMBER
   47      BLOCKING_SESSION_SERIAL#                 NUMBER
   48      BLOCKING_INST_ID                         NUMBER
   49      BLOCKING_HANGCHAIN_INFO                  VARCHAR2(1)
   50      CURRENT_OBJ#                             NUMBER
   51      CURRENT_FILE#                            NUMBER
   52      CURRENT_BLOCK#                           NUMBER
   53      CURRENT_ROW#                             NUMBER
   54      TOP_LEVEL_CALL#                          NUMBER
   55      TOP_LEVEL_CALL_NAME                      VARCHAR2(64)
   56      CONSUMER_GROUP_ID                        NUMBER
   57      XID                                      RAW(8)
   58      REMOTE_INSTANCE#                         NUMBER
   59      TIME_MODEL                               NUMBER
   60      IN_CONNECTION_MGMT                       VARCHAR2(1)
   61      IN_PARSE                                 VARCHAR2(1)
   62      IN_HARD_PARSE                            VARCHAR2(1)
   63      IN_SQL_EXECUTION                         VARCHAR2(1)
   64      IN_PLSQL_EXECUTION                       VARCHAR2(1)
   65      IN_PLSQL_RPC                             VARCHAR2(1)
   66      IN_PLSQL_COMPILATION                     VARCHAR2(1)
   67      IN_JAVA_EXECUTION                        VARCHAR2(1)
   68      IN_BIND                                  VARCHAR2(1)
   69      IN_CURSOR_CLOSE                          VARCHAR2(1)
   70      IN_SEQUENCE_LOAD                         VARCHAR2(1)
   71      CAPTURE_OVERHEAD                         VARCHAR2(1)
   72      REPLAY_OVERHEAD                          VARCHAR2(1)
   73      IS_CAPTURED                              VARCHAR2(1)
   74      IS_REPLAYED                              VARCHAR2(1)
   75      SERVICE_HASH                             NUMBER
   76      PROGRAM                                  VARCHAR2(64)
   77      MODULE                                   VARCHAR2(48)
   78      ACTION                                   VARCHAR2(32)
   79      CLIENT_ID                                VARCHAR2(64)
   80      MACHINE                                  VARCHAR2(64)
   81      PORT                                     NUMBER
   82      ECID                                     VARCHAR2(64)
   83      TM_DELTA_TIME                            NUMBER
   84      TM_DELTA_CPU_TIME                        NUMBER
   85      TM_DELTA_DB_TIME                         NUMBER
   86      DELTA_TIME                               NUMBER
   87      DELTA_READ_IO_REQUESTS                   NUMBER
   88      DELTA_WRITE_IO_REQUESTS                  NUMBER
   89      DELTA_READ_IO_BYTES                      NUMBER
   90      DELTA_WRITE_IO_BYTES                     NUMBER
   91      DELTA_INTERCONNECT_IO_BYTES              NUMBER
   92      PGA_ALLOCATED                            NUMBER
   93      TEMP_SPACE_ALLOCATED                     NUMBER
위의 데이터들을 보면 기대하지 않았던 다양한 값들까지 제공되는 것을 알 수 있습니다. 풍부한 Active Session History 데이터는 전통적으로 3rd Party 툴들이 장점을 보이던 분야였지만, Oracle 11g부터는 데이터가 크게 보완되어 그런 장점들이 의미가 점점 희석되고 있습니다.

Active Session History 기능이 Oracle 10g에 와서야 오라클에 추가된 것은 너무 늦은 감이 있지만, 버전이 올라갈 수록 풍부한 데이터를 제공하는 것을 보면 역시 오라클이라는 생각을 하게 만듭니다. 단, 여전히 부족한 점들이 보이는데요, 버전이 올라가면서 더 많은 데이터가 제공되기를 기대해봅니다.

저작자 표시
신고

'오라클' 카테고리의 다른 글

ASH Viewer  (3) 2010.09.15
V$ACTIVE_SESSION_HISTORY  (2) 2010.09.14
Remote SQL  (4) 2010.09.07
엑셈 퀴즈에 도전해보세요.  (6) 2010.08.25
Deferred Segment Creation의 재미있는 두가지 버그  (0) 2010.08.23
Trackback 0 : Comments 2
  1. tohappy 2010.11.22 11:31 신고 Modify/Delete Reply

    같은맥락으로 9i 와 8i 등에서는 어떤 view가 있을까요?

    • 욱짜 2010.11.22 14:48 신고 Modify/Delete

      8i와 9i에서 10g와 비슷한 효과를 내려면 V$SESSION + V$SESSINO_WAIT 뷰 등을 주기적으로 샘플링하면서 데이터를 저장하고, 저장된 데이터를 읽는 수 밖에 없습니다.

      비슷한 시도들을 하는 경우도 있는데요.
      http://sourceforge.net/projects/orasash/

      위와 같은 아이디어를 이용해서 직접 구현해보셔도 좋습니다. 아주 간단하게는 SPOOL 명령을 이용해서 5초에 한번씩 세션 리스트 정보를 텍스트 파일에 저장하고, 나중에 필요할 때 해당 테스트 파일을 External Table 기능을 이용해서 읽도록 하는 것도 가능합니다.

      하지만 어떤 방법을 사용하더라도 10g에서 제공하는 ASH를 능가할 수는 없습니다. 10g의 ASH는 DMA 방식으로 데이터를 읽기 때문에 가장 가볍습니다.

Write a comment


AWR 써야 하나 말아야 하나...

오라클 2007.08.29 17:19
오라클 10g에서 추가된 AWR(Automatic Workload Repository)는 지금까지 오라클에 추가된 기능들 중 성능 관리 측면에서 가장 현신적이라고 할 수 있다. 성능 이력 데이터를 보관함으로써 기존에는 불가능했던 마법같은 일들(예를 들어 자동 진단. ADDM)이 가능해졌다.

성능 분석에 필요한 모든 데이터의 상세한 이력을 자동으로 관리해준다니... 얼마나 놀라운 발상인가.

하지만, 일부 운영 시스템에서 AWR이 지닌 버그나 성능 저하 등의 문제 때문에 AWR 기능 자체를 비활성화시키는 경우를 종종 볼 수 있었다.

무지막지한 STATISTICS_LEVEL = BASIC 값 부여!!! -,.-

흠... 이것이 옳은 일일까? 모르겠다.

하지만 나의 제안은 이렇다.

  • AWR은 쓰지 않기에는 너무나 좋은 기능이다.
  • 하지만 성능 저하 등의 문제가 있다.
  • 따라서 성능 저하를 최소화시키면서 AWR 본연의 기능은 그대로 쓰자
다행히 몇 개의 히든 파리미터를 통해 AWR의 부하를 조절할 수 있다. AWR에서 가장 많은 양의 데이터를 차지하는 ASH(Active Session History)의 양을 조절하는 것이다.

  • _ASH_ENABLE: FALSE로 하면 ASH 기능을 끌 수 있다. 만일 Active Session History 까지는 필요 없다고 하면 이 파라미터를 쓸 수 있다.
  • _ASH_DISK_WRITE_ENABLE: FALSE로 하면 ASH를 저장하는 기능만 끌 수 있다. 즉 V$ACTIVE_SESSION_HISTORY 뷰는 여전히 사용하되, DBA_HIST_ACTIVE_SESS_HISTORY 뷰는 사용하지 않는다.
  • _ASH_DISK_FILTER_RATIO: 기본값은 10. 즉, 메모리:디스크 비율이 10:1이 되게끔 저장한다. 만일 ASH가 1초 간격으로 수집된다면 디스크에는 10초 간격으로 저장된다. 따라서 이 값을 크게 하면 부하를 줄일 수 있다. 가령 60으로 변경하면 1분 간격으로 디스크에 저장된다. 이 파라미터 조정을 통해 부하를 조절하는 것이 가장 이상적이라고 판단된다.
  • _ASH_SAMPLING_INTERVAL: 기본값은 1000(ms). 즉 ASH를 1초 단위로 수집한다. 이 값을 크게 하면 ASH의 양이 줄고 그 만큼 부하도 줄게 된다.

만일 AWR을 통째로 사용하지 않고 있다면 위의 방법을 적용해보는 것은 어떨까...?


신고
tags : ASH, AWR, Oracle, 오라클
Trackback 0 : Comment 0

Write a comment

티스토리 툴바