개요

Database Replay(이하 DBReplay)는 티베로 DBMS의 버전 업그레이드, 패치 진행 시 Application에 대한 영향도를 검증하는 클라이언트 프로그램 입니다. Database에서 발생한 부하를 메시지 단위로 캡쳐하여 동일한 동작을 수행할 수 있습니다.

DBReplay는 DB 자체를 캡쳐하여 Replay를 통해 영향도를 검사하는 방식이므로, downtime이 발생하지 않고 DB 작업과 동일한 시뮬레이션을 실행하여 정확한 운영 워크로드 반영이 가능합니다.

특히 Procedure나 function 과 같은 DB 기능을 많이 사용하는 업무에 적합한 프로그램 입니다.

DBreplay 작동 프로세스

DBreplay는 Database 부하 capture > Preprocess > Replay > Result (선택) 순서로 진행됩니다.

[그림  1. DBreplay 작동 프로세스]
[그림 1. DBreplay 작동 프로세스]

  1. Database 부하 capture Database 부하(workload)를 capture하는 과정 입니다.

  2. Preprocess Capture된 파일들을 replay 하기 위해 전처리를 진행합니다.

  3. Replay Capture된 파일들의 replay 를 진행합니다.

  4. Result 보다 쉽게 replay 결과를 확인할 수 있도록 console에 결과 전체를 출력하고 html 파일을 생성합니다.

제약사항

다음의 상황에서는 DBreplay 지원이 불가 합니다.

  • Capture DB 환경이 Windows 인 경우

  • Long, Longraw data type (LOB데이터 사용 권장)

  • Capture DB와 Replay DB의 character set이 다른 경우

  • nchar string literal replacement 기능

  • 분산트랜잭션

  • JOB SCHEDULER로 발생한 트랜잭션

  • User Defined Type (예: Object, Varray 등)

  • Parallel DPL 과 DPL이 동일 TABLE에 대해 동시 수행되는 경우

  • 캡쳐된 username 정보를 리플레이 시 알 수 없는 경우

  • self dblink와 같은 동일한 DB에 대한 remote operation (DB isolation 권장)

다음의 상황에서는 정합성 보장이 불가 합니다.

  • Flashback Query

  • PSM 내부에서 발생한 트랜잭션 및 DML

  • RANDOM() 혹은 SYSDATE와 같은, 정해지지 않은 값을 반환하는 함수 사용

  • Sequence 객체를 사용한 operation

  • Capture 도중에 user 정보를 변경한 경우

  • dblink 등을 사용한 외부 쿼리 조회

Last updated