Computer >> 컴퓨터 >  >> 프로그래밍 >> 데이터베이스

Oracle Database 12c 릴리스 12.1.0.1의 새로운 성능 튜닝 기능 – 1부

원문 출처: TriCore, 2017년 4월 11일 게시

본 시리즈는 두 부분으로 구성된 블로그 포스트로, Oracle® Database 12.1.0.1 및 12.1.0.2 버전에 새롭게 추가된 성능 튜닝 기능을 다룹니다. 1부에서는 먼저 출시된 버전인 12.1.0.1의 주요 기능을 살펴봅니다.

Oracle Database 12.1.0.1의 새로운 기능

Oracle Database 12.1.0.1 버전에는 다음과 같은 새로운 기능이 도입되었습니다.

  • 실시간 자동 데이터베이스 진단 모니터(Real-Time ADDM)
  • 프로그램 전역 영역(PGA) 크기 제한 지원
  • 활성 세션 기록(ASH) 기능 강화

실시간 ADDM(Real-Time ADDM)

실시간 ADDM은 데이터베이스를 재시작하지 않고도 중단(hang) 상태에 빠진 데이터베이스의 문제를 분석하고 해결할 수 있도록 지원합니다. 이 절에서는 실시간 ADDM에 대해 자세히 알아봅니다.

실시간 ADDM 연결 모드

실시간 ADDM은 Oracle Enterprise Manager(OEM)를 통해 데이터베이스에 연결할 때 두 가지 연결 모드 중 하나를 사용하며, 어떤 모드가 사용될지는 데이터베이스 상태에 따라 결정됩니다.

  • 일반 연결(Normal connection): 이 모드에서는 JDBC(Java Database Connectivity)를 사용해 데이터베이스에 연결합니다. 연결이 정상적으로 가능한 상황에서 데이터베이스에 대한 폭넓은 성능 분석을 수행합니다.

  • 진단 연결(Diagnostic connection): 이 모드에서는 래치(latch)를 거치지 않고 데이터베이스에 연결합니다. 일반적인 JDBC 연결이 불가능한 심각한 hang 상황에서 특히 유용합니다.

실시간 ADDM 트리거

실시간 ADDM은 3초마다 자동으로 실행되며 인메모리 데이터를 활용해 데이터베이스 성능 문제를 진단합니다. 성능 문제가 감지되면 자동으로 분석이 트리거되며, 이 과정은 다음 단계로 이루어집니다.

  1. 관리 모니터(MMON) 프로세스가 3초마다 잠금(lock)이나 래치(latch)를 사용하지 않고 성능 통계를 수집합니다.

  2. MMON 프로세스는 수집한 통계를 검사하여 표 1에 나열된 문제가 발견되면 실시간 ADDM 분석을 트리거합니다.

  3. MMON 슬레이브 프로세스가 보고서를 생성하여 AWR(Automatic Workload Repository)에 저장합니다. 자세한 내용은 DBA_HIST_REPORTS 뷰와 DBA_HIST_REPORTS_DETAILS 뷰에서 확인할 수 있습니다.

다음 명령어를 사용하면 수동으로도 보고서를 생성할 수 있습니다.

SQL> select dbms_addm.real_time_addm_report() from dual;

표 1: 실시간 ADDM 분석을 트리거하는 성능 문제와 조건

문제조건
높은 부하(High load)평균 활성 세션 수가 CPU 코어 수의 3배를 초과
I/O 병목(I/O bound)단일 블록 읽기 성능을 기준으로 활성 세션에 대한 I/O 영향 평가
CPU 병목(CPU bound)활성 세션이 전체 부하의 10%를 초과하고 CPU 사용률이 50%를 초과
과다 할당된 메모리메모리 할당량이 물리적 메모리의 95%를 초과
인터커넥트 병목(Interconnect bound)단일 블록 인터커넥트 전송 시간 기준 평가
세션 한도(Session limit)세션 한도가 100%에 근접
프로세스 한도(Process limit)프로세스 한도가 100%에 근접
중단된 세션(Hung session)중단된 세션이 전체 세션의 10%를 초과
교착 상태 감지(Deadlock detected)교착 상태(deadlock)가 하나라도 감지된 경우


출처: Database Performance Tuning Guide, 7장 Automatic Performance Diagnostics: Real-Time ADDM Connection Modes

실시간 ADDM 트리거 제어

자동 트리거가 과도한 시스템 리소스를 소모하지 않도록 실시간 ADDM은 다음과 같은 제어 메커니즘을 사용합니다.

  • 보고서 생성 간격: 최근 5분 이내에 자동 트리거로 실시간 ADDM 보고서가 이미 생성되었다면 새로운 보고서가 만들어지지 않습니다.

  • Oracle RAC 제어: 자동 트리거는 개별 데이터베이스 인스턴스에 국한됩니다. Oracle RAC 환경에서는 한 번에 하나의 인스턴스만 실시간 ADDM 보고서를 생성할 수 있습니다.

  • 반복 트리거: 동일한 문제에 대한 자동 트리거가 다시 발생하려면, 직전 45분 이내에 같은 원인으로 생성된 보고서 대비 영향도가 100% 이상이어야 합니다.

  • 새로 식별된 문제: 지난 45분 동안 감지되지 않았던 새로운 문제가 발견되면 새로운 보고서가 생성됩니다.

PGA 크기 제한

PGA 사용량이 과도해지면 스왑(swap)이 빈번하게 발생할 수 있습니다. 이 경우 시스템이 응답하지 않거나 불안정해질 수 있는데, 이런 문제가 나타난다면 PGA_AGGREGATE_LIMIT 초기화 파라미터를 사용해 전체 PGA 사용량을 제한하는 것을 고려해 보세요.

다음 절에서는 Oracle Database 12c R1(12.1.0.1) 이상 버전에서 PGA_AGGREGATE_LIMIT 초기화 파라미터를 활용해 PGA 크기를 제한하는 방법을 설명합니다.

PGA_AGGREGATE_LIMIT 파라미터 개요

PGA_AGGREGATE_LIMIT 파라미터에 정의된 값이 초과되면, Oracle Database는 튜닝 불가능한(untunable) PGA 메모리를 가장 많이 소모하는 세션이나 프로세스를 중단(abort) 또는 종료(terminate)합니다. 종료 작업은 다음 순서로 수행됩니다.

  • 튜닝 불가능한 PGA 메모리를 가장 많이 소모하는 세션의 호출을 중단합니다.
  • PGA 메모리 사용량이 여전히 PGA_AGGREGATE_LIMIT를 초과하면, 튜닝 불가능한 PGA 메모리를 가장 많이 소모하는 세션과 프로세스를 종료합니다.

Oracle Database는 병렬 쿼리를 단일 단위로 취급합니다. 기본적으로 PGA_AGGREGATE_LIMIT 파라미터 값은 2GB, PGA_AGGREGATE_TARGET 값의 200%, 그리고 PROCESSES 파라미터 값에 3MB를 곱한 값 중 가장 큰 값으로 설정됩니다. 단, 물리적 메모리 크기에서 총 SGA(System Global Area) 크기를 뺀 값의 120%를 초과하지 않습니다.

PGA_AGGREGATE_LIMIT 파라미터 설정

PGA_AGGREGATE_LIMIT 초기화 파라미터는 동적으로 설정할 수 있으며, 데이터베이스를 재시작할 필요가 없습니다. 또한 Oracle Database가 자동 메모리 관리를 사용하는지 여부와 관계없이 이 값을 지정할 수 있습니다.

PGA_AGGREGATE_LIMIT 파라미터 변경

PGA_AGGREGATE_LIMIT 초기화 파라미터를 바이트 단위의 새 값으로 설정하면 됩니다. 값을 0으로 설정하면 PGA 메모리에 대한 하드 리밋이 비활성화됩니다.

PGA_AGGREGATE_LIMIT가 초과되면 Oracle Database는 다음 작업을 수행합니다.

  • 튜닝 불가능한 메모리를 가장 많이 사용하는 세션과 관련된 호출을 중단합니다.
  • 총 PGA 메모리 사용량이 여전히 한도를 초과하면, 튜닝 불가능한 메모리를 가장 많이 사용하는 세션을 종료합니다.

SYS 프로세스와 작업 큐(job queue) 프로세스를 제외한 백그라운드 프로세스는 종료 대상에서 제외됩니다. 대신 이들 프로세스가 튜닝 불가능한 메모리를 가장 많이 사용 중이라면, 주기적으로 PGA 사용 요약 정보를 트레이스 파일에 기록합니다.

ASH 기능 강화

Oracle 12c부터는 ASH Analytics라는 새로운 OEM 페이지를 통해 ASH 데이터 시각화에 접근할 수 있습니다. 이 페이지를 사용하면 논리적 차원(logical dimension)을 따라 드릴다운(drill-down) 분석을 수행할 수 있으며, 생성된 보고서를 오프라인에서 열람할 수 있는 다른 사용자에게 전달할 수도 있습니다.

Oracle Database 12c 릴리스 12.1.0.1의 새로운 성능 튜닝 기능 – 1부

이미지 출처: OCP 12C – Emergency Monitoring, Real-Time ADDM

결론

위에서 소개한 새로운 기능들은 Oracle Database 12c Release 1 환경에서 성능 문제를 진단·해결하고 데이터베이스 성능을 향상시키는 데 큰 도움이 됩니다. 시리즈 2부에서는 Oracle Database 12.1.0.2의 성능 튜닝과 관련된 추가적인 새 기능과 변경 사항을 다룹니다.

궁금한 점이나 의견이 있다면 피드백 탭을 통해 남겨 주세요.

참고 자료

본 글을 작성하며 아래 자료를 참고했습니다.

  • Database Performance Tuning Guide, 7장: Automatic Performance Diagnostics – Real-Time ADDM Connection Modes

  • Database Performance Tuning Guide, 7장: Automatic Performance Diagnostics – ADDM Analysis Results