DBAtlas · Veritabanı operasyon atlası

SQL Tuning Advisor görevi oluştur, çalıştır ve önerileri oku

OraclePerformans

Komut

-- 1) Cursor cache'teki SQL icin gorev olustur ve calistir:
VAR task VARCHAR2(64)
BEGIN
  :task := DBMS_SQLTUNE.CREATE_TUNING_TASK(
             sql_id      => '<sql_id>',
             scope       => DBMS_SQLTUNE.SCOPE_COMPREHENSIVE,
             time_limit  => 300,
             task_name   => 'STA_<sql_id>',
             description => 'Yavas rapor sorgusu');
  DBMS_SQLTUNE.EXECUTE_TUNING_TASK(task_name => :task);
END;
/
-- AWR'daki gecmis SQL icin: begin_snap => <b>, end_snap => <e>, sql_id => '<sql_id>'

-- 2) Durum ve rapor:
SELECT task_name, status FROM dba_advisor_log WHERE task_name = :task;

SET LONG 1000000 LONGCHUNKSIZE 1000000 LINESIZE 200 PAGESIZE 0
SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK(:task) FROM dual;

-- 3) Onerileri uygulanabilir script olarak al:
SELECT DBMS_SQLTUNE.SCRIPT_TUNING_TASK(:task) FROM dual;

-- 4) Is bitince:
EXEC DBMS_SQLTUNE.DROP_TUNING_TASK(task_name => :task);

Ne yapar?

Optimizer'ı daha uzun süreli "tuning modu"nda çalıştırarak SQL için istatistik eksikliği, yeni index, SQL profile, alternatif plan ve SQL yeniden yazım önerileri üretir; profile önerisini gerçek çalıştırmayla doğrular.

Ne zaman kullanılır?

Tek bir problemli SQL için hızlı ikinci görüş gerektiğinde, plan regresyonunda SQL profile ile kodu değiştirmeden düzeltme ararken.

Dikkat

Tuning Pack lisansı gerekir. COMPREHENSIVE kapsam SQL'i test amaçlı çalıştırabilir (DML için yalnız SELECT kısmı); prod'da time_limit ver. Index önerileri sistem genelini dikkate almaz; DML maliyetini ayrıca değerlendir. Kullanıcıya ADVISOR yetkisi gerekir.

DBAtlas'ta aç →

İlgili