태터데스크 관리자

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

태터데스크 메시지

저장하였습니다.

_session_wait_history 파라미터의 변화

오라클 2008.01.30 17:48
Oracle 10g에서 Active Session History와 함께 Wait History의 개념이 소개되었다.
v$session_wait_history 뷰를 통해서 Wait Event의 이력을 조회하는 기능이다.

Session이 대기하는 Wait Event를 즉석에서 간편하게 조회할 수 있다는 점에 대단히 유용한 뷰라고 할 수 있다. 단, 치명적인 단점이 하나 있는데 최대 "10개"까지의 이력 정보만 보관하고 있다는 점이다. 이 때문인지 이 뷰를 이용하는 경우는 잘 없는 거 같다.

Oracle 11g가 출시되었을 때 한 가지 기대한 것이 이 v$session_wait_history 뷰가 보관하는 이력이 더 많아지지 않았을까 하는 것이었다. 아래가 그 확인 결과이다.

v$session_wait_history 뷰가 저장하는 이력의 길이는 _session_wait_history라는 히든 파라미터에 의해 결정된다. 이것은 10g와 11g에 공통된 사항이다. 단, 10g에서는 이 파라미터 값을 10보다 크게 주면 다음과 같은 에러가 발생한다.

SQL10g> alter system set "_session_wait_history"=50 scope=spfile;
alter system set "_session_wait_history"=50 scope=spfile
*
ERROR at line 1:
ORA-00068: invalid value 50 for parameter _session_wait_history, must be between 0 and 10

즉, 10이 최대값인 것이다. 하지만 11g에서는 이런 제약이 없다.

SQL11g> alter system set "_session_wait_history"=50 scope=spfile;

시스템이 변경되었습니다

그럼 11g에서의 최대값은?

SQL> alter system set "_session_wait_history"=10000 scope=spfile;
alter system set "_session_wait_history"=10000 scope=spfile
*
1행에 오류:
ORA-00068: 10000 값은 _session_wait_history 매개변수에 부적당하며, 0와 100 사이의 값이어야 합니다.

즉, 11g에서의 최대값은 100으로 제한된다. 이 값을 50으로 설정하면 다음과 같이 50개의 Wait History가 조회 가능하다.

select event, p1, p2, p3, wait_time
from v$session_wait_history
where sid = 132;

EVENT    P1    P2    P3    WAIT_TIME
----------------------------------------------------
SQL*Net message from client    1413697536    1    0    0
SQL*Net message to client    1413697536    1    0    0
log file sync    2339    0    0    0
SQL*Net message from client    1413697536    1    0    4288
SQL*Net message to client    1413697536    1    0    0
SQL*Net message from client    1413697536    1    0    172
SQL*Net message to client    1413697536    1    0    0
SQL*Net message from client    1413697536    1    0    0
SQL*Net message to client    1413697536    1    0    0
SQL*Net message from client    1413697536    1    0    0
SQL*Net message to client    1413697536    1    0    0
log file sync    2316    0    0    0
SQL*Net message from client    1413697536    1    0    34660
SQL*Net message to client    1413697536    1    0    0
SQL*Net message from client    1413697536    1    0    0
SQL*Net message to client    1413697536    1    0    0
db file sequential read    1    74705    1    0
db file sequential read    1    74705    1    1
SQL*Net message from client    1413697536    1    0    904
SQL*Net message to client    1413697536    1    0    0
SQL*Net message from client    1413697536    1    0    0
SQL*Net message to client    1413697536    1    0    0
db file sequential read    1    11370    1    2
db file sequential read    1    8518    1    0
db file sequential read    1    56227    1    0
db file sequential read    1    8520    1    0
db file sequential read    1    8519    1    1
db file sequential read    1    17221    1    0
db file sequential read    1    17224    1    2
db file sequential read    1    56225    1    0
db file sequential read    1    56216    1    1
db file sequential read    1    13730    1    1
db file sequential read    1    1430    1    0
db file sequential read    1    13641    1    0
db file sequential read    1    13634    1    1
db file sequential read    1    1413    1    0
db file sequential read    1    10896    1    1
db file sequential read    1    1437    1    3
log file sync    2149    0    0    0
SQL*Net message from client    1413697536    1    0    17365
SQL*Net message to client    1413697536    1    0    0
SQL*Net message from client    1413697536    1    0    0
SQL*Net message to client    1413697536    1    0    0
SQL*Net message from client    1413697536    1    0    0
SQL*Net message to client    1413697536    1    0    0
SQL*Net message from client    1413697536    1    0    0
SQL*Net message to client    1413697536    1    0    0
SQL*Net message to client    1413697536    1    0    0
SQL*Net message from client    1413697536    1    0    0
SQL*Net message to client    1413697536    1    0    0

Wait Event를 이용해 시스템 문제를 심도깊게 분석하고자 하는 경우에는 11g의 확장된 Wait History를 이용해도 좋을 거 같다.

-- (첨부)---------------------------------------------------------------------
애석하게도 _session_wait_history 파라미터 값은 System 전체 레벨로만 적용 가능하면 변경된 값을 적용하려면 Instance를 Rebound(재시작) 시켜야 한다. 내가 기대한 것은 ...

alter session set "_session_wait_history" = 100;

과 같이 세션 레벨에서 동적으로 변경하는 것이었으나 오라클이 거기까지 고려하지는 못한 거 같다.
신고
Trackback 0 : Comment 0

Write a comment

티스토리 툴바