현상

  • 하루 업무가 19:00에 종료되며, 매일 20:00에 하루 업무를 결산하는 여러 개의 배치 작업을 수행한다.
  • 배치 작업이 효율적으로 수행되는지 점검하기 위해 AWR DB 보고서를 생성하였다.

Top 5 Time Events

  • latch : row cache objects 이벤트를 제외한 상위 이벤트는 병렬SQL처리로 배치 작업을 수행하면서 발생되는 일반적인 대기 이벤트 이다.
  • latch : row cache objects로 인한 성능 지연이 있을 거라고 예상할 수 있다.

DBA_HIST_ACTIVE_SESSION_HISTORY 조회를 통한 문제 오브젝트와 SQL 확인

  • 확인 내용
    • 상위 10개 테이블에서 latch : row cache objects 경합이 집중되고 있음
    • 일 배치 SQL에서 latch : row cache objects 경합이 집중적으로 발생하고 있음
    • 일 배치 SQL은 latch : row cache objects 경합이 집중해서 발생하는 상위 10개 테이블을 검색하거 DML작업을 발생시킴
    • 일 배치 SQL이 검색 및 변경하는 테이블의 증가폭은 크지 않음
    • 상위 10개 테이블은 업무 시간중 DML이 빈번히 발생하는 주요 테이블임
    • 최근 업무 요건 변경으로 한 트랜잭션이 50~200건 이상 변경시키는 경우가 많이 증가하였음

Dictionary Cache Stats 단위 보고서

  • 어떤 종류의 row cache objects가 가장 빈번하게 요청되는지 확인한다.
  • dc_rollback_segmetns 요청 수치가 매우 높으며 이로써 언두 세그먼트의 요청이 급격히 증가하였음을 파악하였다.

Instance Activity Stats 단위 보고서

  • 언두 세그먼트 관련 통계 수치를 확인한다.
  • 지연된 블록 클린 아웃시 증가하는 'cleanouts only - consistent read'의 수치가 급격히 증가하였음을 확인할 수 있었다.

결론

  • 업무 시간에 상위 10개 테이블에 대한 DML이 빈번히 진행됨에 따라 변경 블록들이 증가하였고, 이 블록들을 일 배치 SQL에서 사용하려고 할 때 지연된 블록 클린 아웃을 수행하기 위해 언드 세그먼트를 빈번히 확인하면서 언두 세그먼트에 대한 latch : row cache objects 대기 이벤트가 증가한 것이다.
  • 일 배치 작업 전 latch : row cache objects 대기 이벤트 발생 5개 테이블에 대한 전체 테이블 스캔을 실시하여 지연된 블록 크린 아웃을 미리 수행한다.