Database Reference
In-Depth Information
Laut der Dokumentation von Oracle ist es möglich, die folgenden 5 Parameter im Hint
OPT_PARAM zu benutzen:
• OPTIMIZER_DYNAMIC_SAMPLING,
• OPTIMIZER_INDEX_CACHING,
• OPTIMIZER_INDEX_COST_ADJ,
• OPTIMIZER_SECURE_VIEW_MERGING,
• STAR_TRANSFORMATION_ENABLED
Peter: „
In welchen Situationen kann dieses Hint wichtig sein?
“
Leonid: „
Wenn man das SQL-Tuning mit Optimizer Hints macht. Für viele Parameter
bzw. Parametereinstellungen gibt es entsprechende Hints. Zum Beispiel für den Parame-
ter
optimizer_mode
gibt es mehrere Hints für die einzelnen Parameterwerte: ALL_ROWS,
FIRST_ROWS, FIRST_ROWS (n). Es gibt aber Parameter, für die keine Hints existieren
(z. B. für den Parameter
optimizer_index_cost_adj
). In solchen Fällen kann man das Hint
OPT_PARAM benutzen. Manchmal liefert das Hint OPT_PARAM die einzig mögliche Pro-
blemlösung (wie im Beispiel aus dem Abschn.
18.7.2.1
).
“
P.: „
Die Anwendungsmöglichkeit dieses Hint scheint mir aber ziemlich begrenzt zu sein,
weil man es lediglich für 5 Parameter benutzen kann.
“
L.: „
In der Tat funktioniert es für viele Parameter. Leider gibt es keine zuverlässige Besch-
reibung dieser Parameter. Beschreibungen, die ich kenne, sind zum Teil fehlerhaft, zum Teil
unvollständig, weil Oracle den Kreis solcher Parameter ständig erweitert.
“
P.: „
Kannst Du möglicherweise eine brauchbare Beschreibung erstellen?
“
L.: „
Man muss dann so eine Beschreibung ständig pflegen, weil sie sonst ziemlich schnell
veraltet. Dieser Aufwand wäre mir zu groß. Aus diesem Grund schlage ich vor, hier ganz
anders vorzugehen.
“
P.: „
Wie denn?
“
L.: „
Wenn man nicht sicher ist, ob man das Hint OPT_PARAM für einen Parame-
ter benutzen kann, kann man das direkt prüfen. Prüfen wir zum Beispiel den Parameter
cursor_sharing
. Dafür setzen wir den Parameter
cursor_sharing
auf
force
und ermitteln den
Ausführungsplan für eine SQL-Anweisung mit dem Hint OPT_PARAM für die Parameter-
einstellung
cusror_sharing
=
exact
.
“
P.: „
Was hat der Ausführungsplan mit dieser Prüfung zu tun?
“
L.: „
Bei der Ermittlung des Ausführungsplans mit der Funktion DBMS_XPLAN.
DISPLAY_CURSOR wird der SQL-Text angezeigt.
“