OS 환경 : Oracle Linux 8.7 (64bit)
DB 환경 : Oracle Database 19.22.0.0
방법 : 오라클 19c SQL Plan Management(SPM) 및 Automatic SPM(19.22부터) 무료
19c 라이센스를 보다가 spm이 무료인것을 확인하여 공유함
원문 : SQL Plan Management does not require a license for Oracle Diagnostics Pack or Oracle Tuning Pack
번역 : SQL Plan Management에는 Oracle Diagnostics Pack 또는 Oracle Tuning Pack 라이선스가 필요하지 않습니다.
참고 : https://docs.oracle.com/en/database/oracle/oracle-database/19/dblic/Licensing-Information.html#GUID-B6113390-9586-46D7-9008-DCC9EDA45AB4
SPM이란?
SPM(SQL Plan Management)은 SQL 실행 계획이 예기치 않게 바뀌어 성능이 떨어지는 것을 방지하기 위한 옵티마이저의 계획 관리 프레임워크임
SPM은 SQL 실행 계획의 안정성을 보장하기 위해 승인된 실행 계획만 사용하도록 SQL Plan Baseline을 생성하고 유지함
옵티마이저가 새로운 플랜을 찾더라도 성능이 더 좋거나 동등하게 검증된 경우에만 Baseline에 추가해 사용을 허용함
DB 통계 변화, 옵티마이저 버전 업그레이드, 패치 등으로 플랜이 바뀌어도 성능 회귀가 발생하지 않도록 보호함
SPM은 플랜 캡처, 플랜 저장, 플랜 진화(evolution)를 포함한 전체 관리 기능을 제공함
참고로 DBMS_SPM 패키지를 통해 Baseline 생성, 조회, 수정, 삭제 등 모든 관리 작업을 수행할 수 있음
참고 :
오라클 19c 실행계획 변경 시 spm 적용 방법 ( https://positivemh.tistory.com/844 )
SPM(SQL Plan Management) SQL PLAN BASELINE 이용한 Export / Import 테스트 (실행계획 변경) ( https://positivemh.tistory.com/447 )
SPM(SQL Plan Management) SQLSET 이용한 Export / Import 테스트 (실행계획 변경) ( https://positivemh.tistory.com/446 )
SQL을 변경하지 않고 실행계획 변경 테스트(SQL Plan Management) ( https://positivemh.tistory.com/217 )
라이센스 상세 내용
SQL Plan Management은 Oracle Diagnostics Pack이나 Oracle Tuning Pack 라이선스를 요구하지 않음
SE2와 BaseDB SE에서는 하나의 SQL 문당 하나의 SQL Plan Baseline만 사용할 수 있으며 SQL Plan Evolution 기능은 비활성화됨
SE2와 BaseDB SE 환경에서 SQL Plan Baseline은 아래 방식으로 생성하거나 캡처할 수 있음
1. 자동 캡처를 통한 생성(OPTIMIZER_CAPTURE_SQL_PLAN_BASELINE=TRUE)
2. 커서 캐시에서 직접 로딩하는 방식(DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE)
3. Stored Outline을 Baseline으로 변환하는 방식(DBMS_SPM.MIGRATE_STORED_OUTLINE)
4. STGTAB을 이용한 Import 방식(DBMS_SPM.UNPACK_STGTAB_BASELINE)
이 모든 방식은 SQL 문 하나당 하나의 Baseline만 저장함
SQL Plan Baseline은 DBMS_SPM.CREATE_STGTAB_BASELINE, PACK_STGTAB_BASELINE, UNPACK_STGTAB_BASELINE 등을 이용해 백업하거나 이동할 수 있음
미사용 SQL Plan Baseline은 자동으로 정리되지 않음
SQL 문에 대해 새로운 대안 실행 계획이 수집되더라도 SQL Plan History에는 추가되지 않음
SQL Plan Baseline은 ALTER_SQL_PLAN_BASELINE과 DROP_SQL_PLAN_BASELINE을 통해 수정 또는 삭제가 가능함
다만 SE2와 BaseDB SE에서는 다음 기능들은 사용할 수 없다고함
- CONFIGURE
- LOAD_PLANS_FROM_AWR
- LOAD_PLANS_FROM_SQLSET
- SQL Plan Evolution 관련 모든 기능
그리고 Automatic SQL Plan Management 기능은 19.22 버전(EE)부터 무료라고함
기존에 26ai, exadata에서만 무료였다가 19.22부터 백포트되었다고함
참고 : https://blogs.oracle.com/optimizer/license-change-for-auto-spm
Automatic SPM 이란?
자동 SPM은 SQL Plan Management(SPM)의 자동화된 확장 기능임
DB가 자동으로 SQL 실행 계획(plan)을 감시하고 필요 시 성능 저하(regression)가 의심되는 SQL문에 대해 대체 플랜(alternative plan)을 찾아 테스트하고 더 나은 플랜이면 baseline으로 받아들여 자동 적용함
DBA의 수동 개입 없이도 성능 저하 시 대체 플랜 탐색 => 테스트 => 더 나은 플랜 자동 적용이 가능함
이를 통해 SQL 성능 회귀를 자동으로 복구할 수 있음
참고 : https://blogs.oracle.com/optimizer/what-is-automatic-sql-plan-management-and-why-should-you-care
결론 :
운영을 하다보면 종종 플랜이 변경되어 성능이 저하되는 경우가 있는데
이때 spm을 이용하면 간편하게 플랜을 이전 플랜으로 변경할수 있음
Oracle Diagnostics Pack 이나 Oracle Tuning Pack도 필요없다고 하니 라이센스 걱정없이 유용하게 사용할수 있을듯함
참조 :
https://docs.oracle.com/en/database/oracle/oracle-database/19/dblic/Licensing-Information.html#GUID-B6113390-9586-46D7-9008-DCC9EDA45AB4
https://blogs.oracle.com/optimizer/license-change-for-auto-spm
https://blogs.oracle.com/optimizer/what-is-automatic-sql-plan-management-and-why-should-you-care
'ORACLE > Admin' 카테고리의 다른 글
| Oracle AI Database 26ai 업그레이드 고려 사항 (0) | 2025.12.08 |
|---|---|
| 오라클 26ai 버전명 변경사항 (0) | 2025.12.08 |
| 오라클 19c ssl(tls)을 이용한 tns(tcps) 연결 설정 (0) | 2025.12.02 |
| 오라클 19c varchar2 최대 길이 32767로 변경 (1) | 2025.12.01 |
| 오라클 19c expdp impdp 상태 n초마다 자동 확인 (0) | 2025.11.24 |