IBTransaction 모니터 사용자 가이드
드미트리 쿠즈멘코, 2008년 6월 8일
IBSurgeon Transaction Monitor (IBTM)는 InterBase 및 Firebird 데이터베이스 내의 동적 트랜잭션을 모니터링, 조회 및 분석하도록 설계된 소프트웨어 패키지입니다.
목차
IBSurgeon Transaction Monitor 사용자 가이드. {C}{C}{C}{C}1{C}{C}{C}{C}{C}{C}{C}{C}{C}
구성 요소는 무엇인가요?. {C}{C}{C}{C}2{C}{C}{C}{C}{C}{C}{C}{C}{C}
모니터{C}{C}{C}{C}2{C}{C}{C}{C}{C}{C}{C}{C}{C}
기록되는 내용은 무엇인가요?. {C}{C}{C}{C}2{C}{C}{C}{C}{C}{C}{C}{C}{C}
구성 도우미{C}{C}{C}{C}3{C}{C}{C}{C}{C}{C}{C}{C}{C}
구성 도우미 사용{C}{C}{C}{C}4{C}{C}{C}{C}{C}{C}{C}{C}{C}
모니터 서비스 관리{C}{C}{C}{C}4{C}{C}{C}{C}{C}{C}{C}{C}{C}
서버 구성{C}{C}{C}{C}4{C}{C}{C}{C}{C}{C}{C}{C}{C}
데이터베이스 구성{C}{C}{C}{C}5{C}{C}{C}{C}{C}{C}{C}{C}{C}
시각화 도구{C}{C}{C}{C}8{C}{C}{C}{C}{C}{C}{C}{C}{C}
그래프 보기 유형{C}{C}{C}{C}13{C}{C}{C}{C}{C}{C}{C}{C}{C}
기술 지원{C}{C}{C}{C}16{C}{C}{C}{C}{C}{C}{C}{C}{C}
IBTM 패키지에는 세 가지 주요 모듈이 포함되어 있습니다:
- 모니터 - 하나 이상의 데이터베이스에서 트랜잭션 상태를 모니터링하고 기록하는 소형 Win32 서비스 기반 프로그램입니다.
- 구성 도우미 - 모니터와 뷰어의 설정을 구성하는 데 사용됩니다.
- 시각화 도구 - 모니터가 기록한 정보를 조회하고 분석하도록 설계되었습니다.
모니터는 Windows NT, 2000, XP 및 Windows Server 2003과 2008(32비트 및 64비트 모두)에서 작동하는 소형 Win32 서비스 기반 프로그램(ibtm.exe)입니다. 시작 시 모니터는 (구성 도우미가 설정한) 설정을 읽고 지정된 데이터베이스를 모니터링합니다. 모니터링 중에는 매분(권장 기본 간격) 데이터베이스에 연결하여 트랜잭션 상태를 읽습니다.
InterBase 또는 Firebird가 Windows에서 실행 중인 경우, 모니터는 데이터베이스가 있는 서버에 설치할 수 있습니다. Linux 기반 서버의 경우, InterBase 또는 Firebird 서버에 네트워크로 접근할 수 있는 모든 Windows 컴퓨터에 설치할 수 있습니다. 모니터는 다음 방법으로 설치할 수 있습니다:
- 구성 도우미 사용
- 명령 셸 창에서
중요! 모니터 설치를 시작하기 전에 관리자 권한과 권한으로 Windows에 로그인했는지 확인해야 합니다. 모니터는 Localsystem 사용자 계정으로 자동 시작 서비스로 설치됩니다.
모니터는 주기적으로만 데이터베이스에 연결하고 수집된 정보를 일반 텍스트 로그 파일에 기록하므로 추가 규칙을 적용할 필요가 없습니다. 그러나 모니터 구성 및 데이터베이스 로그인 정보를 보호하려면 Windows 서비스 제어판을 통해 모니터의 서비스 설정과 해당 디렉터리(및 로그) 접근 권한을 필요에 따라 변경해야 합니다.
모니터 구성 매개변수는 구성 도우미에서 설명합니다.
모니터는 주기적으로 데이터베이스 헤더 페이지를 확인한 후 다음 트랜잭션 정보를 로그에 저장합니다:
- 로그 시간
- 가장 오래된 트랜잭션 번호
- 가장 오래된 스냅샷 트랜잭션 번호
- 가장 오래된 활성 트랜잭션 번호
- 다음 트랜잭션 번호
- 활성 트랜잭션 수(서버 버전에 따라 다름)
이 정보는 로그 파일에 저장되며, 시각화 도구를 사용하여 조회하고 분석할 수 있습니다. 시각적 트랜잭션 상태 정보를 사용하여 애플리케이션이 트랜잭션을 얼마나 오래 열어 두는지, 동시에 실행되는 트랜잭션이 몇 개인지, 스냅샷 트랜잭션이 얼마나 오래 실행되는지, 애플리케이션이 트랜잭션을 시작하는 가장 집중적인 시간이 언제인지 등을 이해할 수 있습니다.
참고: 모니터는 트랜잭션 상태 정보를 로컬 로그 파일에 기록합니다. 이 정보나 다른 정보를 네트워크를 통해 전송하지 않습니다.
구성 도우미(ibtmconfig.exe)는 모니터와 뷰어의 구성 매개변수를 설정하는 데 사용됩니다. 구성 매개변수를 ibtm.ini 파일에 저장합니다.
! Windows Vista 또는 Windows 7에서는 관리자 권한으로 구성 도우미를 실행해야 합니다(마우스 오른쪽 버튼 클릭). 그렇지 않으면 IBTM 서비스를 관리할 수 없습니다(오류 5, 접근 거부).
팁! IBTM은 구성 매개변수를 저장하기 위해 레지스트리를 사용하지 않으므로, 한 컴퓨터에서 구성을 준비한 다음 모니터가 설치된 다른 컴퓨터로 ibtm.ini를 이동할 수 있습니다(모니터 서비스는 새 구성을 읽으려면 다시 시작해야 합니다).
모니터와 구성 도우미는 IBTM 설치 프로그램에 의해 같은 디렉터리에 배치되므로, 모니터와 구성 도우미는 동일한 구성 파일(ibtm.ini)을 공유합니다.

구성 도우미는 다음을 도와줍니다:
- 모니터 서비스 관리 - 설치, 제거, 시작, 중지, 일시 중지 및 다시 시작
- 모니터링해야 할 데이터베이스가 있는 InterBase 또는 Firebird 서버 지정
- 특정 데이터베이스에 대한 데이터베이스 및 모니터링/일정 옵션 지정

구성 도우미가 시작되면 시스템에서 모니터 서비스 상태를 확인합니다.
모니터 설치 - 모니터 서비스가 설치되지 않은 경우, 왼쪽 상단 모서리의 IBTM 상태 레이블에 “설치되지 않음” 메시지가 표시됩니다. 모니터를 설치하려면 창 오른쪽에 있는 설치 버튼을 누릅니다. 모니터 서비스는 시작 유형(자동 또는 수동) 확인란 값을 사용합니다. 모니터 서비스 설치가 성공하면 IBTM 상태가 “중지됨"으로 변경되고 “서비스 실행” 버튼이 활성화됩니다.
데이터베이스 구성 매개변수를 변경할 때마다 모니터 서비스를 다시 시작해야 합니다.
IBTM은 모니터링을 위해 데이터베이스에 접근할 때 TCP/IP 연결 프로토콜을 사용합니다. 따라서 서버와 같은 컴퓨터에 모니터를 설치한 경우, 서버를 localhost 또는 서버의 호스트 이름으로 추가해야 합니다. 이 작업이 완료되면 이 서버에서 모니터링할 데이터베이스를 추가할 수 있습니다.
이 버전의 IBTM에서는 한 번에 하나의 데이터베이스만 모니터링할 수 있습니다. 여러 데이터베이스를 동시에 모니터링하려면 추가 라이선스가 필요합니다. 자세한 내용은 문의해 주십시오( www.ibphoenix.com).
그러나 여러 서버와 데이터베이스를 설정하고 그 사이를 전환하여 모니터링할 데이터베이스를 선택할 수 있습니다(활성 데이터베이스는 굵게 강조 표시됩니다). 추가 라이선스를 사용하면 여러 데이터베이스를 동시에 모니터링할 수 있습니다.
데이터베이스 목록 왼쪽에 있는 서버 추가 및 데이터베이스 추가 버튼을 사용합니다.
각 데이터베이스 레코드는 다음 매개변수로 구성할 수 있습니다:
통계 가져오기 방법. 이는 서버 버전에 따라 다르며 다양한 기능을 지원합니다. 각 방법의 장단점은 다음과 같습니다:
| Services API | Firebird API | TMP$ 테이블 | |
| InterBase 4.x/5.x | 아니요 | 아니요 | 아니요 |
| InterBase 6.0 Classic | 아니요 | 아니요 | 아니요 |
| Firebird Classic - 1.0, 1.5.0, 1.5.1, 1.5.2 |
아니요 | 예 | 아니요 |
| InterBase 6.x SuperServer | 예 | 아니요 | 아니요 |
| InterBase 7.x/2007 | 예 | 아니요 | 예 |
| Firebird Classic 및 SuperServer: 1.5.3, 1.5.4 /2.0 | 예 | 예 | 아니요 |
Services API, Firebird API 및 TMP$ 테이블 간의 차이점:
| 방법 | 장점 | 단점 |
| Services API InterBase 6.0 SuperServer에서 도입된 공개 API |
- 보편적인 방법으로 모든 버전의 InterBase 및 Firebird에서 작동합니다 - 다음 트랜잭션에 영향을 주지 않습니다 |
- 실제 활성 트랜잭션 수를 찾을 수 있는 기능이 없습니다 - 서버가 데이터베이스 헤더 페이지를 디스크에 거의 저장하지 않는 경우(InterBase V7.1/V7.5) 오래된 정보를 표시할 수 있습니다 |
| Firebird API
Firebird V1.0부터 isc_database_info 호출에 확장 매개변수가 추가되어 트랜잭션 상태 정보를 반환할 수 있습니다. | 활성 트랜잭션 수 정보(최대 4676개 활성 트랜잭션)를 얻을 수 있는 기능 제공 | - 어떤 InterBase 버전에서도 지원되지 않음
- 내부적으로 Next 트랜잭션을 증가시킵니다. Monitor는 데이터베이스에 연결할 때마다 Next 트랜잭션을 +1씩 증가시킵니다. 이때 데이터베이스에 트랜잭션 활동이 없으면 Oldest Active, Oldest Snapshot 및 Oldest 트랜잭션 번호는 변경되지 않습니다.
데이터베이스에 활동이 전혀 없으면 Monitor가 1분마다 데이터베이스를 확인하도록 구성된 경우 24시간 동안 Next 트랜잭션을 +1440까지 증가시킵니다.
(Firebird API 자체에는 이러한 효과가 없습니다. 설명된 동작은 isc_database_info 메서드에 특정한 것입니다.) |
| TMP$ 테이블
서버 상태 모니터링을 위해 InterBase 7.0에서 도입됨 | - InterBase V7.x/V2007에서 실제 트랜잭션 상태를 검색할 수 있으며 활성 트랜잭션 수를 포함합니다.
- 트랜잭션 상태 정보를 얻기 위해 Monitor는 read_only read_committed rec_version 매개변수로 트랜잭션을 시작합니다. 이러한 트랜잭션은 트랜잭션 계산 목적상 활성으로 처리되지 않으며 서버나 데이터베이스 성능에 영향을 미치지 않습니다. | - InterBase V7.0/V7.1/V7.5/V2007에서만 지원됨
- Firebird API와 마찬가지로 TMP$ 테이블에서 데이터를 읽으려면 트랜잭션 내에서 수행해야 하므로 Next 트랜잭션 번호를 증가시킵니다.
- 접근 시간은 Services API를 사용하는 것보다 약간 더 깁니다(< 0.5초). |
서버와 호환되지 않는 통계 방법을 선택한 경우 Monitor의 트랜잭션 로그에는 아무것도 기록되지 않습니다. Configuration Assistant의 Error log 탭을 확인하여 데이터베이스 모니터링 중 발생할 수 있는 오류를 확인하십시오.
Check Interval. 이는 Monitor가 데이터베이스에서 트랜잭션 정보를 가져오는 빈도를 결정합니다. 1분이 최소 간격입니다. 1, 3, 5, 10, 20, 30분 또는 1시간 간격으로 설정할 수 있지만 가장 유용한 간격은 1분 또는 3분입니다.
1분 간격을 사용하면 Monitor는 24시간 동안 데이터베이스 트랜잭션 상태를 1440번 확인합니다. 로그 파일의 크기는 약 150KB입니다.
Start time and End Time. 설정하지 않으면 Monitor는 작동하는 전체 시간 동안 지정된 데이터베이스에서 통계를 수집합니다. 시간 제한을 설정하면 Monitor는 지정된 기간 동안만 작동합니다.
User name and Password. 데이터베이스 트랜잭션 상태를 모니터링하는 데 사용할 계정의 사용자 이름과 비밀번호입니다. SYSDBA 로그인 또는 원하는 다른 사용자 로그인을 사용할 수 있습니다. 비SYSDBA 로그인을 사용하는 경우 Services API 및 Firebird API 메서드의 경우 해당 사용자 계정에 추가 권한을 부여할 필요가 없습니다. ‘TM’과 같은 사용자를 만들 수 있으며 Monitor는 성공적으로 작동합니다.
임시 시스템 테이블(IB V7.1, V7.5, V2007)의 경우 사용자 로그인은 TMP$TRANSACTIONS 및 TMP$DATABASES 테이블에 대한 읽기 액세스 권한이 있어야 합니다. InterBase V7.5/V2007 데이터베이스에서 Embedded User Authentication을 사용하는 경우 해당 데이터베이스에 대해 로그인을 만들고 해당 액세스 권한을 명시적으로 부여해야 합니다.
Test Server Connection 버튼.

지정된 서버에 대해 최상의 트랜잭션 모니터링 방법을 확인할 수 있습니다. 이 버튼을 사용하여 선택한 방법이 지정된 서버에서 작동하는지 확인할 수도 있습니다.
Visualizer는 Monitor가 수집한 트랜잭션 정보를 볼 수 있습니다. .tmd 파일의 기본 디렉터리는 Configuration Assistant 설정에서 가져옵니다.

왼쪽에는 통계 파일 목록이 표시됩니다. 기본적으로 Viewer는 기본 설치 폴더에 있는 Log 폴더를 찾습니다. Configuration Assistant를 사용하여 이 폴더를 변경하거나 Viewer 메뉴 옵션을 통해 원하는 폴더를 열 수 있습니다.
통계 파일을 클릭하면 즉시 그래프에 표시됩니다. Ctrl 또는 Shift 버튼을 누른 상태에서 통계 파일을 클릭하면 여러 통계를 동시에 확인할 수 있습니다:

왼쪽 하단에서 다양한 그래프 선(Next, Oldest 등)을 켜고 끌 수 있습니다. 예를 들어 트랜잭션 동향을 보려면 Next dynamic을 켜면 IBTM이 데이터베이스에서 읽은 사이에 시작된 새 트랜잭션 수가 표시됩니다:

그래프의 오른쪽, 왼쪽, 위쪽 및 아래쪽에는 마우스로 드래그하여 이벤트가 발생한 시점과 해당 값을 확인할 수 있는 특수 선이 있습니다. 그래프 중앙의 세로 파란색 선과 갈색 가로 선을 살펴보십시오. 이 선을 이동하면 해당 레이블이 변경됩니다 - 세로 선은 특정 시간을 가리키고 가로 선은 특정 트랜잭션 번호를 가리킵니다:

또한 간격을 가로, 세로 또는 양방향으로 확대/축소할 수 있습니다. 그래프를 초기 상태로 되돌리려면 Reset Zoom 버튼을 누르십시오(또는 마우스로 반대 방향으로 확대/축소).

중요! IBTM 통계 데이터가 Firebird 또는 InterBase 7.x 접근 방법을 사용하여 수집된 경우 실제 활성 트랜잭션 수를 볼 수 있습니다.

이 그래프는 2005년 11월 10일에 애플리케이션에 의해 열린 활성 트랜잭션이 65105개였음을 보여줍니다. 또한 점심 시간(13:0014:00)에도 약 80개의 활성 트랜잭션이 있었음을 알 수 있습니다. 이는 다음을 의미합니다:
- 사용자가 점심을 먹으러 갈 때 애플리케이션을 닫지 않음
- 애플리케이션에 열려 있고 활성인 트랜잭션이 있음
이 정보를 사용하여 애플리케이션 작동 방식에 무엇이 문제인지 결정할 수 있습니다. 이는 애플리케이션이 직접 관리하는 트랜잭션 수에 따라 달라집니다.
그래프 보기를 변경하는 세 개의 버튼이 있습니다:
Relative (oldest). Next 및 Oldest Active 트랜잭션 번호에서 Oldest 트랜잭션 또는 Oldest Snapshot(둘 중 낮은 값)을 빼서 계산합니다. 그래프 왼쪽의 범례를 보면 반활성 트랜잭션의 간격을 확인할 수 있습니다. 다음은 Relative 버튼을 켠 이전 그래프의 예입니다:

AutoMin. 기본적으로 IBTM 통계 파일을 열면 가장 낮은 트랜잭션 번호가 자동으로 “0"으로 처리됩니다. 일반적으로 이는 Oldest(관심 있는) 트랜잭션 또는 Oldest Snapshot입니다.

Abs. 큰 트랜잭션 번호에 대한 트랜잭션 번호 흐름과 차이를 볼 수 있습니다. 이전 이미지에서 가장 낮은 트랜잭션 번호는 약 700만으로, 예를 들어 Oldest와 Next 트랜잭션 간의 차이를 이해하기 어렵습니다. 여기서 이 통계의 경우 데이터 차이가 18000 트랜잭션을 넘지 않았음을 알 수 있습니다.

데이터베이스의 트랜잭션 동작에 대한 전문적인 설명이 필요하시면 기술 지원을 주문하실 수 있습니다. 여기에서 서비스에 대해 자세히 알아보십시오.
또한 질문이 있으시면 언제든지 이메일 [email protected]으로 연락해 주시기 바랍니다.