본문으로 건너뛰기

락 트리

홈 화면 > 프로젝트 선택 > 분석 > 락 트리

하루 동안 발생한 락(lock)의 추이를 분석하는 도구입니다. 이 기능을 통해 락을 발생시킨 세션(lock holder)과 락을 대기하고 있는 세션(lock waiter)에 대한 트리 구조를 시각적으로 확인할 수 있습니다. 특정 시점에 발생한 락 정보의 holder와 waiter 간의 관계를 분석할 수 있습니다.

주요 기능은 다음과 같습니다.

  • 락 추이 분석: 설정한 조회 기간 동안 발생한 락의 추이를 시간에 따라 추적하여 그래프로 표시합니다. 이를 통해 락이 어떻게 발생하고 해소되는지를 시각적으로 파악할 수 있습니다.

  • 락 Holder 및 Waiter 확인: 각 락에 대한 holder와 waiter를 트리 구조로 확인할 수 있습니다. 이를 통해 특정 락이 발생한 상황에서 락을 발생시킨 세션과 대기하는 세션 간의 관계를 파악할 수 있습니다.

  • 세션 간 관계 분석: 락을 발생시킨 세션과 대기하는 세션 간의 관계를 분석하여 쿼리 실행 및 트랜잭션 처리 과정에서 발생한 락의 원인을 식별할 수 있습니다.

이를 통해 데이터베이스 관리자는 락 관련 문제를 신속하게 식별하고 해결할 수 있으며, 데이터베이스 성능을 최적화할 수 있습니다.

기본 사용 안내

Lock tree

원하는 숫자 1 날짜와 시간을 설정한 다음 숫자 2 목록에서 인스턴스를 선택하세요. 설정한 시간에 락이 발생했다면 lock wait sessions와 화면 아래 테이블에 조회한 데이터를 표시합니다.

Global Lock 정보 확인하기

클러스터로 구성된 Oracle 데이터베이스 환경에서 Global Lock 정보를 확인하는 것은 여러 가지 중요한 장점을 제공합니다. 특히, Oracle Real Application Clusters (RAC) 환경에서 이러한 정보는 성능 최적화와 문제 해결에 필수적입니다.

클러스터로 구성된 환경이라면 인스턴스에서 클러스터를 선택할 수 있습니다.

락 트리

  • Global Lock Wait Sessions

    선택한 시간 범위 내에서 발생한 Global Lock 대기 세션의 수를 시간대별로 시각화하여 표시합니다. 특정 시간에 얼마나 많은 락 대기가 발생했는지 한눈에 파악할 수 있습니다. 각 색상은 다른 인스턴스를 나타내며 락이 발생한 인스턴스별로 구분되어 표시합니다.

  • Global Lock Tree

    락과 관련한 세부 정보를 트리 구조로 확인할 수 있습니다. 락이 발생한 인스턴스, 세션 ID(sid), 세션 상태(status) 등 중요한 정보가 포함됩니다. 락의 홀더 타입(holder type)과 락 모드(lock mode), 그리고 락 대기 타입(waiter type)을 통해 락의 원인과 영향을 신속하게 파악할 수 있습니다.

    트리 구조를 통해 어떤 세션이 락을 보유하고 있고 어떤 세션이 대기 중인지 파악할 수 있습니다.

노트

클러스터를 선택한 상태에서 조회할 수 있는 최대 시간 범위는 3시간입니다.

  • RAC 환경에서 여러 인스턴스가 동일한 데이터에 동시에 접근할 수 있습니다. Global Lock 정보는 이러한 동시 접근 상황에서 데이터 일관성을 보장하기 위한 주요 메커니즘 중 하나입니다. 이를 모니터링함으로써 데이터 일관성 유지 여부를 확인할 수 있습니다.

  • Global Lock 대기 시간은 시스템 성능에 큰 영향을 미칠 수 있습니다. 클러스터의 여러 인스턴스 간에 발생하는 Global Lock 경합을 모니터링하면 성능 저하의 원인이 되는 병목 현상을 조기에 감지할 수 있습니다.

  • Global Lock 정보는 트랜잭션이 클러스터 내에서 어떻게 처리되는지에 대한 중요한 통찰을 제공합니다. 동시성 제어가 적절히 이루어지지 않으면 트랜잭션 대기 시간이 길어지거나 데드락이 발생할 수 있습니다.

  • RAC 환경에서는 인스턴스 간 부하 분산이 매우 중요합니다. Global Lock 정보를 통해 어떤 인스턴스가 더 많은 경합을 겪고 있는지 파악할 수 있으며, 이를 기반으로 부하를 재분배하거나 리소스 관리를 개선할 수 있습니다.

컬럼 정보 안내

컬럼 정보에 대한 보다 자세한 내용은 다음 링크를 참조하세요.

항목설명
sid세션의 id
cpu(xos)XOS를 설치한 경우 수집되는 CPU 사용율
serial#동일한 세션 id를 사용한경우 판별하기 위해 증가시키는 값
usernamedb 사용자 이름
commandCOMMAND_TYPE과 동일, SQL command number
status세션 상태
schemaname스키마, username과 동일
osuser세션에 접속한 운영체제의 사용자 이름
spid운영체제 프로세스 식별자
process세션에 접속한 클라이언트 프로세스 id
logon_time세션이 생긴 시점
last_call_et세션이 활성화 상태인 경우, 활성 상태가 된 후 경과된 시간(초)
sql_textquery, 실행되고 있는 statement, 리터럴 문자열을 분리한 SQL 문
sql_paramquery에서 분리한 리터럴 값
prev_sql_text이전에 실행한 query
prev_sql_param이전에 실행한 query param
program클라이언트에서 실행한 프로그램 정보
typesession type - user background recursive (whatap.conf)에서 조정 가능
seq#현재 또는 마지막 대기를 고유하게 식별하는 숫자(대기할 때마다 증가)
event세션이 대기 중인 경우 세션이 대기 중인 리소스 또는 이벤트의 번호
p1첫 번째 대기 이벤트 파라미터(소수점)
p2두 번째 대기 이벤트 파라미터(소수점)
p3세 번째 대기 이벤트 파라미터(소수점)
wait_class대기 중인 이벤트의 클래스 이름
wait_time세션이 현재 대기 중이면 값은 0, 0보다 큰 경우 마지막 대기 시간(milliseconds)
seconds_in_wait세션이 현재 대기 중인 경우 대기를 위해 대기한 시간, 세션이 대기 중이 아니라면 마지막 대기 시작 이후의 시간
state대기 상태, WAITING, WAITED UNKNOWN TIME, WAITED SHORT TIME, WAITED KNOWN TIME
machine세션에 접속한 클라이언트 서버 이름(hostname)
port클라이언트 포트 숫자
terminal클라이언트 터미널 이름
module클라이언트에서 실행한 프로그램에서 사용자가 설정한 모듈(module)의 이름
action현재 수행되고 있는 모듈의 사용자가 설정한 액션 이름
client_info사용자가 설정한 클라이언트 정보
client_identifier사용자가 설정한 클라이언트 식별자
session logical reads데이터를 버퍼 캐시 내에서 읽은 횟수
physical reads데이터를 물리 디스크에서 읽은 횟수
excute countSQL의 실행 개수
parse count (hard)총 구분 문석 호출 수(실제 구문 분석)
parse count (total)총 구문 분석 호출 수(hard, soft, describe)
opened cursors current현재 열려있는 cursor의 개수
db block changes데이터베이스 내 모든 블록의 변경 횟수
session pga memory세션의 현재 PGA 크기(size)
undo_segidundo 정보 id
undo_blkundo 블록 개수
undo_recundo 레코드 개수
sql_addressSQL 문(statement)을 식별하는 정보
sql_hash_valueSQL 문(statement)을 식별하는 정보
sql_id현재 실행 중인 SQL 문(statement)의 SQL 식별자
sql_child_number현재 실행 중인 SQL 문(statement)의 하위 번호
sql_exec_start해당 세션에서 현재 실행 중인 SQL 실행이 시작 시점
sql_exec_idSQL 실행 식별자
prev_sql_addr마지막으로 실행된 SQL 문(statement)을 식별하는 정보
prev_child_number마지막으로 실행된 SQL 문(statement)의 하위 번호
prev_exec_start마지막으로 실행된 SQL 문(statement)의 SQL 실행 시작 시점
prev_exec_id마지막으로 실행된 SQL 문(statement)의 SQL 실행 식별 id
plsql_entry_object_id스택에서 가장 위에 있는 PL/SQL 하위 프로그램의 객체 id
plsql_entry_subprogram_id스택에서 가장 위에 있는 PL/SQL 서브 프로그램의 서브 프로그램 id
plsql_object_id현재 실행 중인 PL/SQL 개체의 서브 프로그램 id
taddr트랜잭션의 주소(address)
lockwaitlock wait address, 세션이 대기 중인 락 주소
row_wait_objROW_WAIT_ROW#에 지정된 행이 포함된 테이블의 개체 ID
row_wait_fileROW_WAIT_ROW#에 지정된 행이 포함된 데이터 파일의 식별자
row_wait_blockROW_WAIT_ROW#에 지정된 행이 포함된 블록의 식별자
row_wait_row현재 잠긴 행
pdml_status값이 ENABLED인 경우 세션이 PARALLEL DML 활성화 모드입니다. 값이 DISABLE인 경우 세션에서 PARALLE DML 활성화 모드를 지원하지 않습니다. 값이 FORCED인 경우 세션이 PARALLE DML을 강제로 사용하도록 변경된 것입니다.
pq_status값이 ENABLED인 경우 세션이 PARALLEL QUERY 활성화 모드입니다. 값이 DISABLE인 경우 세션에서 PARALLEL QUERY 활성화 모드를 지원하지 않습니다. 값이 FORCED인 경우 세션이 PARALLEL QUERY을 강제로 사용하도록 변경된 것입니다.
blocking_session_status차단 세션이 있는지 여부에 대한 세부 정보를 제공
blocking_instance차단 세션에 대한 인스턴스 식별자
blocking_session차단 세션의 세션 식별자
final_blocking_session_status최종 차단 세션이 있는지 여부에 대한 세부 정보를 제공
final_blocking_instance최종 차단 세션에 대한 인스턴스 식별자
final_blocking_session최종 차단 세션의 세션 식별자
service_name해당 세션의 서비스 이름, DB 이름과 유사
saddr세션 주소
con_id데이터와 관련한 컨테이너의 id (멀티 데이터베이스를 지원하는 경우에만 해당)
rss(xos)XOS 에이전트에서 수집하는 OS 지표
pss(xos)XOS 에이전트에서 수집하는 OS 지표
ioread(xos)XOS 에이전트에서 수집하는 OS 지표
iowrite(xos)XOS 에이전트에서 수집하는 OS 지표
노트

와탭은 클라이언트와 관련한 정보를 기본 저장합니다.