SQL Optimizer for Oracle®은 SQL 최적화 프로세스를 자동화하고 SQL 문의 성능을 최대화합니다. SQL Optimizer for Oracle®은 데이터베이스 객체, 파일 또는 Oracle SGA(System Global Area)에 있는 SQL 문 컬렉션의 SQL 문을 분석, Rewrite 및 평가합니다. SQL Optimizer에서 Problematic SQL 문을 식별하면 SQL을 최적화하고 최적화된 문장을 포함하는 대안 코드를 제공합니다.
SQL Optimizer은(는) 또한 완벽한 인덱스 최적화 및 Plan 변경 분석 솔루션을 제공합니다. 또한 여러 SQL 문 또는 SQL 작업 부하에 대한 권장 인덱스를 제공하고, 인덱스 영향 분석을 시뮬레이션하고, 대안 SQL Execution Plan을 생성합니다.
SQL Optimizer는 다음 모듈로 구성됩니다.
Optimize SQL에는 SQL Rewrite 모드와 Plan Control 모드가 있습니다.
SQL Rewrite 모드 | 설명 |
Optimize SQL Statements |
SQL Optimizer의 인공 지능 엔진을 사용하여 SQL 구문 규칙을 실행하고 Oracle 최적화 힌트를 적용하여 의미론적으로 동일한 대체 SQL 문을 작성합니다. 또한 데이터베이스 환경에서 테스트할 사용자 정의 대체 SQL 문을 작성할 수 있습니다. |
Test Run SQL Alternatives |
대체 SQL 문을 테스트 실행하여 실행 통계를 확인합니다. 이를 통해 데이터베이스 환경에 가장 적합한 SQL 문을 찾을 수 있는 실행 시간을 알 수 있습니다. |
Generate Index Alternatives |
SQL 문 구문 및 데이터베이스 구조를 분석하여 성능을 향상시키는 대체 인덱스를 제공합니다. SQL Optimizer가 가상 인덱스를 사용하여 실제로 데이터베이스에서 인덱스를 생성하지 않고 대체 인덱스를 생성합니다. |
Test for Scalability | Benchmark Factory™를 통해 발생 가능한 작업 부하를 시뮬레이션하여 SQL 문 성능을 테스트합니다. |
Incorporate Best Practices | 데이터베이스 성능을 향상시키기 위한 일반적인 기술 모범 사례를 포함합니다. |
Plan Control 모드 | 설명 |
Generate Execution Plan Alternatives | 원본 소스 코드를 변경하지 않으면서 SQL 문에 대한 대체 Execution Plan을 생성합니다. |
Deploy Baselines |
대체 Execution Plan의 기준을 작성하고 이러한 기준을 배포하여 최적의 데이터베이스 성능을 유지합니다. |
Optimize Indexes는 SQL 작업 부하 또는 SQL 문 그룹을 분석하고 SQL 문의 작업 부하 또는 그룹에 가장 적합한 인덱스 세트를 결정합니다.
Batch Optimize는 일괄 처리를 위해 Foglight Performance Investigator 리포지토리에 저장된 파일, 데이터베이스 객체, SQL 텍스트 또는 문을 전송합니다. Batch Optimize는 SQL 문을 검색하거나 추출하고 문장을 최적화하며 대체 문장을 테스트하여 데이터베이스 환경에서 가장 뛰어난 성능을 제공할 수 있는 SQL 문을 찾습니다.
Scan SQL이 원본 코드 및 데이터베이스 객체에서 실행하지 않고 Problematic SQL 문을 식별합니다. 그런 다음 Scan SQL은 Problematic SQL 문을 분석하고 성능 수준에 따라 분류합니다.
Inspect SGA는 Oracle SGA에서 SQL 문을 분석합니다. SQL 성능 검토를 위해 SQL 문 및 실행 통계를 검색하는 데 사용되는 기준을 지정합니다.
Analyze Impact에서는 SQL 문에 대한 Execution Plan 및 Oracle 비용 변경 사항을 추적함으로써 데이터베이스 변경이 SQL 작업 부하에 미치는 영향을 평가할 수 있습니다. 매개 변수 변경과 새로운 인덱스 작성이 성능에 미치는 영향을 평가하기 위해 영향 분석을 실행할 수 있습니다. 또한 동일한 응용 프로그램을 실행하는 두 개의 다른 데이터베이스에 대한 비교도 실행할 수 있습니다.
Manage Plans는 SQL 문 성능 향상에 사용되는 저장 기준 및 아웃라인을 구성합니다.
SQL 최적화 워크플로는 SQL 문이 데이터베이스 환경에서 최적의 성능을 발휘하도록 보장합니다.
절차 | 설명 |
---|---|
Identify Problematic SQL |
Batch Optimize는 데이터베이스 객체에서 포함된 SQL 문을 추출합니다. 문장을 추출한 후에는 Execution Plan 작업을 분석하고 발생할 수 있는 성능 병목 현상을 식별합니다. 참고:
|
Optimize SQL Statements |
Batch Optimize가 Problematic SQL 문을 식별하면 이러한 문장을 자동으로 최적화하고 고유한 Execution Plan으로 대체 문을 생성합니다. Batch Optimize는 SQL 문 구문과 데이터베이스 구조를 분석하여 대체 문을 생성합니다. 최적화 프로세스 중에 힌트를 사용할 수도 있습니다. 참고: Optimize SQL에서 SQL Rewrite 모드를 사용하여 Scan SQL을 통해 추출된 SQL 문을 최적화할 수도 있습니다. |
Test Run SQL Alternatives |
Batch Optimize는 대체 문장을 생성한 후 대체 문장을 자동으로 테스트하고 데이터베이스 환경에 가장 적합한 문장을 제공합니다. 참고: Batch Optimize는 SQL 최적화 프로세스를 자동화하므로 생성된 가장 적합한 대체 문장만 제공됩니다. Optimize SQL로 문장을 전송하여 사용 가능한 모든 대체 문장을 볼 수 있습니다. |
Compare SQL Alternatives |
Batch Optimize는 원본 SQL 문의 SQL 텍스트 및 실행 계획과 최상의 대체 문장을 비교합니다. 참고: Optimize SQL로 문장을 전송할 경우 원본 SQL 문과 사용 가능한 대체 문장을 비교할 수 있습니다. |
Replace Problematic SQL Statements | Batch Optimize는 원본 소스 코드를 대체할 수 있는 스크립트를 작성합니다. |
Generate Index Alternatives |
SQL 문을 최적화하는 것 외에 Optimize SQL에서 문장에 대한 대체 인덱스를 생성할 수 있습니다. Optimize Indexes를 사용하여 SQL 문 그룹과 SQL 작업 부하에 대한 새 인덱스를 생성할 수 있습니다. |
Generate Execution Plan Alternatives | Optimize SQL의 Plan Control 모드를 사용하여 원본 소스 코드를 변경하지 않고도 SQL 문에 대한 대체 Execution Plan을 생성할 수 있습니다. Plan Control 모드는 SQL 문에 가장 적합한 실행 계획을 찾은 후 기준으로 배포합니다. |
성능 변경 사항 분석 | Analyze Impact에서 인덱스와 매개 변수 변경과 같은 특정 변경이 SQL 문의 성능에 미치는 영향을 평가합니다. |
Oracle 데이터베이스 권한은 개별 사용자의 액세스를 제한합니다. 다음은 특정한 Oracle 데이터베이스 권한이 필요한 SQL Optimizer의 기능을 요약한 것입니다.
모듈 |
기능 |
권한 |
---|---|---|
모든 모듈 |
Trace Setup 옵션: Oracle 추적 통계 컬렉션 활성화 |
ALTER SESSION 권한이 필요합니다. 다음 뷰에 대한 액세스 권한이 필요합니다. SYS.V_$SESSION SYS.V_$PROCESS |
모든 모듈 | DBMS_XPLAN 검색 | SYS.DBMS_XPLAN 패키지에 대한 액세스 권한이 필요합니다. |
모든 모듈 | General | Oracle 8 이상용 Oracle init 매개 변수 O7_DICTIONARY_ACCESSIBILITY가 false로 설정되어 있으면 SELECT ANY TABLE 권한이 있더라도 SYS의 개체에 액세스할 수 없습니다. 이 경우 SYS의 객체에 액세스하기 위해 SELECT ANY DICTIONARY 권한 또는 SELECT_CATALOG_ROLE이 필요합니다. |
Optimize SQL(SQL Rewrite) | 실행 중인 SQL에 대해 세션 매개 변수 변경 |
SYS.V_$PARAMETER 뷰 액세스 권한이 필요합니다. |
가상 인덱스 생성 | Oracle 8i 이상이 필요합니다. | |
SQL에 대한 기존 변환(Translation) 확인 |
Oracle 12c 이상이 필요합니다. SYS.ALL_SQL_TRANSLATIONS 뷰에 대한 액세스 권한이 필요합니다. | |
SQL Translation 프로파일 만들기 |
Oracle 12c 이상이 필요합니다. CREATE SQL TRANSLATION PROFILE 권한이 필요합니다. | |
아웃라인 배포 |
Oracle 8i 이상이 필요합니다. CREATE ANY OUTLINE 및 DROP ANY OUTLINE 권한이 필요합니다. 다음 뷰에 대한 액세스 및 UPDATE 권한이 필요합니다. OUTLN.OL$HINTS OUTLN.OL$ OUTLN.OL$NODES | |
SQL Translation 등록 |
Oracle 12c 이상이 필요합니다. SYS.DBMS_SQL_TRANSLATOR 패키지에 대한 액세스 권한이 필요합니다. SYS.ALL_SQL_TRANSLATION_PROFILES 뷰에 대한 액세스 권한이 필요합니다. | |
Optimize SQL(Plan Control) | 데이터베이스 연결 열기 | Oracle 11g 이상이 필요합니다. |
Execution Plan 검색, Alternative Plan 생성 |
ADMINISTER SQL MANAGEMENT OBJECT 권한이 필요합니다. 다음 패키지에 대한 액세스 권한이 필요합니다. SYS.DBMS_SQL이 필요합니다. SYS.DBMS_SPM SYS.DBMS_XPLAN 다음 뷰에 대한 액세스 권한이 필요합니다. SYS.DBA_SQL_PLAN_BASELINES | |
Optimize SQL 및 Batch Optimize |
Execution Method 옵션: Run on Server 설정 |
SYS.DBMS_SQL 패키지에 대한 액세스 권한이 필요합니다. |
실행 시간 통계 검색 |
다음 뷰에 대한 액세스 권한이 필요합니다. SYS.V_$MYSTAT SYS.V_$STATNAME SYS.V_$PARAMETER | |
Actual Plan 검색 |
ALTER SESSION 권한이 필요합니다. SYS.DBMS_XPLAN 패키지에 대한 액세스 권한이 필요합니다. 다음 뷰에 대한 액세스 권한이 필요합니다. SYS.V_$SQLAREA SYS.V_$ SQL_PLAN_STATISTICS_ALL SYS.V_$SESSION | |
데이터베이스의 바인드 값 캡처 |
Oracle 10g 이상이 필요합니다. 다음 뷰에 대한 액세스 권한이 필요합니다. SYS.V_$SQLAREA SYS.V_$SQL_BIND_CAPTURE | |
Optimize Indexes | 인덱스 권장 |
Oracle 8i 이상이 필요합니다. |
AWR에 액세스 |
Oracle 10g 이상이 필요합니다. 다음 시스템 뷰에 대한 액세스 권한이 필요합니다. SYS.DBA_HIST_SNAPSHOT SYS.DBA_HIST_SQLTEXT SYS.DBA_HIST_SQLSTAT | |
Workload Repository에 대한 제어 정보 표시 |
다음 시스템 뷰에 대한 액세스 권한이 필요합니다. SYS. DBA_HIST_WR_CONTROL | |
Workload Repository에 대한 SQL 요약 표시 |
다음 시스템 뷰에 대한 액세스 권한이 필요합니다. SYS. DBA_HIST_SQL_SUMMARY | |
Foglight PI Repository에 액세스 |
다음 테이블에 대한 액세스 권한이 필요합니다. QUEST_SC_ACTION_DIM QUEST_SC_CLIENT_INFO_DIM QUEST_SC_MODULE_DIM QUEST_SC_SQL_STAT_FACT QUEST_SC_SQL_SYNTAX_DIM QUEST_CTRL_PYRAMID_LEVELS QUEST_DB_USER_DIM QUEST_INSTANCE_DIM QUEST_PROGRAM_DIM QUEST_TIME_DIM | |
SGA에 액세스 | SYS.V_$SQLAREA 뷰에 대한 액세스 권한이 필요합니다. | |
Inspect SGA |
수집할 SQL: SQL 영역에서 실행된 SQL |
다음 뷰에 대한 액세스 권한이 필요합니다. SYS.V_$SQLAREA SYS.V_$SQLTEXT_WITH_NEWLINES(또는 Oracle 버전에 따라 SYS.V_$SQLTEXT) Oracle 9 이상에서는 SYS.V_$SQL_PLAN 뷰에 대한 액세스 권한이 필요합니다. |
수집할 SQL: 현재 실행 중인 SQL |
다음 뷰에 대한 액세스 권한이 필요합니다. SYS.V_$SESSION SYS.V_$SQLAREA SYS.V_$SQLTEXT_WITH_NEWLINES(또는 Oracle 버전에 따라 SYS.V_$SQLTEXT) Oracle 9 이상에서는 SYS.V_$SQL_PLAN 뷰에 대한 액세스 권한이 필요합니다. | |
Flush Oracle 공유 풀 |
ALTER SYSTEM 권한이 필요합니다. | |
Execution Plan 정보 |
Oracle 9 이상에서는 SYS.V_$SQL_PLAN 뷰에 대한 액세스 권한이 필요합니다. | |
세션별 모니터링 | SYS.V_$SESSION 뷰에 대한 액세스 권한이 필요합니다. | |
Manage Plans (Baselines Management) |
Baselines Management 세션 또는 데이터베이스 연결 열기 | Oracle 11g 이상이 필요합니다. |
Baseline 보기 | SYS.DBA_SQL_PLAN_BASELINES 뷰에 대한 액세스 권한이 필요합니다. | |
Baseline Plan 보기 |
SYS.DBA_SQL_PLAN_BASELINES 뷰에 대한 액세스 권한이 필요합니다. SYS.DBMS_XPLAN 패키지에 대한 액세스 권한이 필요합니다. | |
Baseline 가져오기, 내보내기 및 마이그레이션 |
ADMINISTER SQL MANAGEMENT OBJECT 및 CREATE TABLE 권한이 필요합니다. SYS.DBA_SQL_PLAN_BASELINES 뷰에 대한 액세스 권한이 필요합니다. SYS.DBMS_SPM 패키지에 대한 액세스 권한이 필요합니다. | |
Baseline 구성 값 보기 및 수정 Oracle 매개 변수 값 얻기 OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES 및 OPTIMIZER_USE_SQL_PLAN_BASELINES |
ADMINISTER SQL MANAGEMENT OBJECT 및 ALTER SYSTEM 권한이 필요합니다. SYS.DBMS_SPM 패키지에 대한 액세스 권한이 필요합니다. 다음 뷰에 대한 액세스 권한이 필요합니다. SYS.V_$SYSTEM_PARAMETER SYS.DBA_SQL_MANAGEMENT_CONFIG SYS.DBA_DATA_FILES | |
Manage Plans (Outlines Management) |
Outlines Management 세션 또는 데이터베이스 연결 열기 | Oracle 8i 이상이 필요합니다. |
Outline 보기 | OUTLN.OL$HINTS(SELECT 전용) 및 OUTLN.OL$(SELECT 전용) 권한이 필요합니다. | |
Outline 구성 값 수정 | ALTER SYSTEM 및 OUTLN.OL$(SELECT 전용) 권한이 필요합니다. | |
Outline 수정 |
DROP ANY OUTLINE 및 ALTER ANY OUTLINE 권한이 필요합니다. SYS.OUTLN_PKG 패키지에 대한 액세스 권한이 필요합니다. | |
Analyze Impact
|
인덱스 영향 평가에 사용할 가상 인덱스 |
Oracle 8i 이상이 필요합니다. 다음 시스템 뷰에 대한 액세스 권한이 필요합니다. SYS.V_$SESSION |
매개 변수 영향 평가에 사용할 세션 매개 변수 변경 |
다음 시스템 뷰에 대한 액세스 권한이 필요합니다. SYS.V_$PARAMETER | |
AWR 액세스 |
Oracle 10g 이상이 필요합니다. 다음 시스템 뷰에 대한 액세스 권한이 필요합니다. SYS.DBA_HIST_SNAPSHOT SYS.DBA_HIST_SQLTEXT SYS.DBA_HIST_SQLSTAT | |
Workload Repository에 대한 제어 정보 표시 |
다음 시스템 뷰에 대한 액세스 권한이 필요합니다. SYS. DBA_HIST_WR_CONTROL | |
Workload Repository에 대한 SQL 요약 표시 |
다음 시스템 뷰에 대한 액세스 권한이 필요합니다. SYS. DBA_HIST_SQL_SUMMARY | |
Foglight PI Repository에 액세스 |
다음 테이블에 대한 액세스 권한이 필요합니다. QUEST_SC_ACTION_DIM QUEST_SC_CLIENT_INFO_DIM QUEST_SC_MODULE_DIM QUEST_SC_SQL_STAT_FACT QUEST_SC_SQL_SYNTAX_DIM QUEST_CTRL_PYRAMID_LEVELS QUEST_DB_USER_DIM QUEST_INSTANCE_DIM QUEST_PROGRAM_DIM QUEST_TIME_DIM | |
SGA 액세스 |
다음 시스템 뷰에 대한 액세스 권한이 필요합니다. SYS.V_$SQLAREA | |
데이터베이스 영향을 비교하기 위한 데이터베이스 정보 표시 |
다음 시스템 뷰에 대한 액세스 권한이 필요합니다. SYS.PRODUCT_COMPONENTS_VERSION SYS.V_$PARAMETER SYS.NLS_SESSION_PARAMETERS SYS.NLS_INSTANCE_PARAMETERS SYS.NLS_DATABASE_PARAMETERS SYS.V_$SGAINFO SYS.V_$DATABASE SYS.V_$INSTANCE SYS.V_$STATISTICS_LEVEL SYS.V_$OPTION |
© 2025 Quest Software Inc. ALL RIGHTS RESERVED. 이용 약관 개인정보 보호정책 Cookie Preference Center