Database Reference
In-Depth Information
gleicht seine Laufzeitstatistiken mit den Laufzeitstatistiken des besten akzeptierten Aus-
führungsplans. Sind die Laufzeitstatistiken des nicht akzeptierten Ausführungsplans bes-
ser, wird dieser Plan akzeptiert. Es ist möglich, mehrere oder alle nicht akzeptierten SQL
Plan Baselines einer SQL-Anweisung mit einem Aufruf dieser Funktion zu evolvieren.
Man kann manuell eine SQL Plan Baseline für eine SQL-Anweisung aus der SQL-Area
oder aus einem SQL-Set erzeugen. Dafür muss man die Funktionen DBMS_SPM.LOAD_
PLANS_FROM_CURSOR_CACHE bzw. DBMS_SPM.LOAD_PLANS_FROM_SQLSET
benutzen. Es gibt also keine Funktion, mit der man eine SQL Plan Baseline für einen Aus-
führungsplan aus dem AWR unmittelbar erzeugen kann. Zunächst muss man dafür ein
SQL-Set anlegen. Alle manuell angelegten SQL Plan Baselines sind stillschweigend akzep-
tiert, i.e. sie können angewendet werden.
Mit den Funktionen DBMS_SPM. MIGRATE_STORED_OUTLINE ist es möglich, die
bestehenden Stored Outlines in die jeweiligen SQL Plan Baselines zu umwandeln. In Ab-
hängigkeit von den Argumenten dieser Funktionen kann man
• alleStoredOutlines,
• alleStoredOutlineseinerKategorieoder
• einzelneStoredOutlines
umwandeln. Die so angelegten SQL Plan Baselines haben den Status ACCEPTED='YES'.
Man kann sie zusätzlich mit dem Status FIXED='YES' beim Anlegen versehen.
Peter: „Ich nehme an, Du hast ein paar Skripte, die das manuelle Anlegen der SQL Plan
Baselines erleichtern.“
Leonid: „Ja, mit dem Skript create_sql_plan_bl_awr11.sql kann man eine SQL Plan Base-
line für einen Ausführungsplan aus dem AWR ganz einfach erzeugen. Das Skript create_sql_
plan_bl_sga11.sql macht dasselbe für einen Ausführungsplan aus der View V$SQL_PLAN.
Diese beiden Skripte generieren einen Kommentar mit dem Hashwert des jeweiligen Aus-
führungsplans. Das erübrigt in den meisten Fällen die Ermittlung des Ausführungsplans für
eine SQL Plan Baselines mittels der Funktion DBMS_XPLAN.DISPAY_SQL_PLAN_BASE-
LINE. Mit dem Skript migrate_stored_outln_to_bl112.sql kann man Stored Outlines nach
SQL Plan Baselines migrieren. Die mit diesen 3 Skripten angelegten SQL Plan Baselines be-
kommen den Status FIXED= ' YES'.“
Das Skript test_case_sql_plan_baselines.sql zeigt, wie man eine SQL Plan Baseline für
eine SQL-Anweisung aus der SQL-Area anlegen und anwenden kann.
Zum Schluss dieses Abschnitts möchte ich darauf verweisen, dass man eine SQL Plan
Baseline ohne Ausführung der jeweiligen SQL-Anweisung, also für den jeweiligen Explain
Plan anlegen kann. Dieses Verfahren betrifft DML-Anweisungen und Selects. Das folgen-
de Beispiel zeigt, wie es funktioniert.
Search WWH ::




Custom Search