Database Reference
In-Depth Information
14.3
SQL Plan Baselines
Im Unterschied zu den Stored Outlines, die die SQL Plan Baselines künftig ersetzen müs-
sen, beinhalten die letzteren die tatsächlichen Ausführungspläne. Außerdem werden dort
u.a. sowohl die jeweiligen Bind-Variablen (falls vorhanden) als auch die Laufzeitstatistiken
abgespeichert.
Laut der Dokumentation von Oracle zählen zu den SQL Plan Baselines nicht alle ge-
speicherten Pläne, sondern lediglich diejenigen, die akzeptiert (accepted) sind (nur die
akzeptierten SQL Plan Baselines können angewendet werden). Vereinfachungshalber wer-
den wir alle gespeicherten Pläne als SQL Plan Baselines bezeichnen. Ist eine SQL Plan
Baseline bereits angelegt, kann Oracle später weitere SQL Plan Baselines für die jeweilige
SQL-Anweisung anlegen, wenn der Optimizer einen noch nicht in den SQL Plan Baselines
vorhandenen Plan errechnet. Oracle macht das, weil der Optimizer einen besseren Plan
als die bestehenden SQL Plan Baselines finden kann. Es gibt aber noch einen zusätzli-
chen Grund dafür. Dieser Vorrat der gespeicherten Pläne kann behilflich sein im Fall der
strukturellen Änderungen (z. B. das Löschen eines Indexes), bei denen die beste SQL Plan
Baseline nicht mehr anwendbar ist. In so einer Situation kann die zweitbeste akzeptierte
SQL Plan Baseline genommen werden. Die beste der akzeptierten SQL Plan Baselines ist
diejenige, die die geringsten Optimizer-Kosten oder den Status FIXED='YES' hat. Wenn
mehrere akzeptierte SQL Plan Baselines für eine SQL-Anweisung vorhanden sind, wird
immer die beste angewendet. Wenn eine akzeptierte SQL Plan Baseline den Status FI-
XED='YES' hat, werden keine neuen SQL Plan Baselines als Vorrat abgespeichert.
Keine Kategorien sind für SQL Plan Baselines vorgesehen. Dies macht das Anlegen der
SQL Plan Baselines für die Testzwecke unmöglich, so dass sie zunächst für eine Session
aber nicht für das Gesamtsystem freigegeben werden.
Peter: „Ich kann nicht einschätzen, wie wichtig es ist, zunächst eine SQL Plan Baseline zu
testen und sie erst dann freizugeben. Solch eine Möglichkeit hätte ich aber für alle Fälle gern.“
Leonid: „In den meisten Fällen sind dafür keine Tests notwendig.“
P.: „Wenn Oracle nichts dafür anbietet, wäre es möglich, das doch mit einem Trick zu
machen?“
L.: „Ich kenne keinen Trick, der das ermöglicht. Ein Versuch, die Kategorien über die SQL
Profiles künstlich einzuführen (ähnlich dem Verfahren aus dem Abschn.   18.7.2 ) schlägt fehl,
weil Oracle die SQL Plan Baselines vor den SQL Profiles auswertet. Ansonsten hätte die-
ses Verfahren funktioniert, da man den Parameter optimizer _ use _ sql _ plan _ baselines für
eine SQL-Anweisung mit dem Hint OPT_PARAM setzen kann.“
Wie bei den Stored Outlines werden Signaturen auch bei der Suche nach einer passen-
den SQL Plan Baseline benutzt. Für SQL Plan Baselines benutzt Oracle Exact Matching
Signature (die auch bei den SQL Profiles benutzt wird). Wie bei den Stored Outlines kann
eine SQL Plan Baseline für eine SQL-Anweisung aus einem anderen Schema angewendet
werden, wenn
• ExactMatchingSignaturedesjeweiligenSQL-TextesmitderExactMatchingSignature
der SQL Plan Baseline übereinstimmt,
Search WWH ::




Custom Search