View a markdown version of this page

RDS for Oracle의 실시간 SQL Plan Management - Amazon Relational Database Service

RDS for Oracle의 실시간 SQL Plan Management

Oracle Database 26ai(26.0.0.0)부터 Amazon RDS for Oracle은 실시간 SQL Plan Management를 지원합니다. 이 기능은 실행 계획 변경 사항을 감지하고, 이전 계획과 비교하여 평가하고, 필요에 따라 SQL 계획 기준에서 최고 성능의 계획을 선택하여 SQL 성능 회귀를 방지합니다. 이 프로세스는 투명하며 수동 개입이 필요하지 않습니다.

RDS for Oracle에서 실시간 SQL Plan Management를 활성화하려면 DBMS_SPM.CONFIGURE를 사용하여 auto evolve task를 켭니다. 그런 다음 rdsadmin.rdsadmin_spm_util 패키지를 사용하여 SYS 소유 태스크 파라미터를 구성합니다.

개요

SQL 성능 회귀는 Oracle 옵티마이저가 이전 계획보다 성능이 떨어지는 새 실행 계획을 선택할 때 발생합니다. 실시간 SQL Plan Management는 이러한 회귀를 자동으로 탐지 및 방지합니다.

실시간 SQL Plan Management가 활성화되면 데이터베이스는 다음을 수행합니다.

  1. 실행 계획 변경 사항을 실시간으로 감지합니다.

  2. 이전 계획과 비교하여 새 계획의 성능을 평가합니다.

  3. SQL 계획 기준을 자동으로 생성하거나 업데이트합니다.

  4. 회귀를 방지하기 위해 가장 성능이 좋은 계획을 선택합니다.

요구 사항

실시간 SQL Plan Management를 사용하려면 DB 인스턴스가 다음 요구 사항을 충족해야 합니다.

  • Oracle Database 26ai 이상

  • Oracle Enterprise Edition

실시간 SQL Plan Management 활성화

실시간 SQL Plan Management를 활성화하려면 다음 두 단계를 완료합니다.

1단계: auto SPM evolve task 켜기

마스터 사용자 또는 DBA 역할이 있는 사용자로 다음 문을 실행합니다.

BEGIN DBMS_SPM.CONFIGURE('AUTO_SPM_EVOLVE_TASK', 'AUTO'); END; /

2단계: SYS 소유 태스크 파라미터 구성

SYS_AUTO_SPM_EVOLVE_TASK 태스크는 SYS가 소유합니다. RDS for Oracle은 이 용도로 rdsadmin.rdsadmin_spm_util 패키지를 제공합니다.

데이터베이스가 진화된 계획을 자동으로 수락하도록 ACCEPT_PLANSTRUE로 설정합니다.

EXEC rdsadmin.rdsadmin_spm_util.set_evolve_task_accept_plans('TRUE');

(선택 사항) 대체 계획 소스를 AUTO로 설정합니다.

EXEC rdsadmin.rdsadmin_spm_util.set_evolve_task_alternate_plan_source('AUTO');

구성 확인

실시간 SQL Plan Management가 활성화되어 있는지 확인하려면 다음 쿼리를 실행합니다.

SELECT parameter_value FROM DBA_SQL_MANAGEMENT_CONFIG WHERE parameter_name = 'AUTO_SPM_EVOLVE_TASK';

이 쿼리는 AUTO를 반환합니다.

태스크 파라미터 설정을 확인하려면 다음 쿼리를 실행합니다.

SELECT parameter_name, parameter_value FROM DBA_ADVISOR_PARAMETERS WHERE task_name = 'SYS_AUTO_SPM_EVOLVE_TASK' AND parameter_name IN ('ACCEPT_PLANS', 'ALTERNATE_PLAN_SOURCE');

실시간 SQL Plan Management 비활성화

실시간 SQL Plan Management를 비활성화하려면 다음 문을 실행합니다.

BEGIN DBMS_SPM.CONFIGURE('AUTO_SPM_EVOLVE_TASK', 'OFF'); END; /

rdsadmin_spm_util 프로시저

rdsadmin.rdsadmin_spm_util 패키지는 다음 프로시저를 제공합니다.

rdsadmin_spm_util 프로시저
절차 파라미터 기본값 설명

set_evolve_task_accept_plans

p_value

'TRUE'

SYS_AUTO_SPM_EVOLVE_TASKACCEPT_PLANS 파라미터를 설정합니다. 유효 값은 'TRUE''FALSE'입니다.

set_evolve_task_alternate_plan_source

p_value

'AUTO'

SYS_AUTO_SPM_EVOLVE_TASKALTERNATE_PLAN_SOURCE 파라미터를 설정합니다. 유효한 값은 'AUTO', 'CURSOR_CACHE', 'AUTOMATIC_WORKLOAD_REPOSITORY''SQL_TUNING_SET'입니다.

SQL 계획 기준 모니터링

실시간 SQL Plan Management를 활성화한 후 데이터베이스가 자동으로 관리하는 계획 기준을 모니터링할 수 있습니다.

SELECT SQL_HANDLE, PLAN_NAME, ENABLED, ACCEPTED, AUTOPURGE FROM DBA_SQL_PLAN_BASELINES ORDER BY LAST_MODIFIED DESC;

고려 사항

실시간 SQL Plan Management를 사용할 때는 다음 사항을 고려하세요.

  • DBA 역할이 있는 사용자는 DBMS_SPM.CONFIGURE를 직접적으로 호출할 수 있습니다. 이 단계에서는 래퍼가 필요하지 않습니다.

  • 마스터 사용자는 SYS 소유 어드바이저 태스크에 직접 액세스할 수 없으므로 SYS 소유 SYS_AUTO_SPM_EVOLVE_TASK 태스크에서 태스크 파라미터를 구성하는 데 rdsadmin.rdsadmin_spm_util 절차가 필요합니다.

  • 실시간 SQL Plan Management는 투명하게 작동합니다. 애플리케이션 코드를 변경할 필요가 없습니다.

  • SQL 계획 기준은 SYSAUX 테이블스페이스의 공간을 사용합니다. 기능을 활성화한 후 SYSAUX 사용량을 모니터링합니다.

  • DBMS_SPM.CONFIGURE에 전달되는 파라미터 값(예: 'AUTO''OFF')은 대/소문자를 구분합니다. 대문자 값을 사용합니다.

관련 리소스