Database Reference
In-Depth Information
6.1.2
Feature Autotrace in SQL*Plus
Mit diesem Feature muss man meiner Meinung nach etwas aufpassen. Einige Datenbank-
administratoren denken, dass der Ausführungsplan in diesem Modus angezeigt wird.
Leonid: „ Peter, teilst Du auch diese Meinung?
Peter: „ Wenn Du so fragst, dann stimmt es wahrscheinlich nicht. Aber ehrlich gesagt, ich
habe in der Tat so gedacht.
L.: „ Bei Autotrace wird Explain-Plan angezeigt.
P.: „ Warum ist es schlecht?
L.: „ Das ist nicht schlecht. Nur wenn eine SQL-Anweisung in diesem Modus ausgeführt
wird, erwartet man logischerweise die Anzeige des jeweiligen Ausführungsplans. Die Anzeige
eines Explain-Plans statt des Ausführungsplans war nicht so wichtig in den alten Versionen
von Oracle, bei denen diese beiden Pläne in der Regel identisch waren. In den neuen Versio-
nen unterscheiden sie sich wesentlich häufiger.
P.: „ Wo muss man sonst bei dem Modus Autotrace aufpassen?
L.: „ In diesem Modus werden DDL- und DML-Kommandos immer ausgeführt.
P.: „ Auch wenn man diesen Modus mit der Einstellung ‚set autotrace traceonly explain'
setzt?
L.: „ Ja, auch in diesem Fall. Wenn man beispielsweise auf die Idee kommt, Explain-Plan
für ein DDL-Kommando mit Autotrace zu ermitteln, wird man sehr unangenehm überrascht,
weil dieses Feature dafür absolut nicht geeignet ist.
SQL> set autotrace traceonly explain
SQL>
SQL> create index i2_ln_test on ln_test(a) online;
Index wurde erstellt.
P.: „ Ich habe immer gedacht, dass keine SQL-Anweisungen bei der Einstellung ‚set autotrace
traceonly explain' ausgeführt werden.
L.: „ Das betrifft ausschließlich Selects.
P.: „ Es freut mich, dass ich hier zumindest zum Teil Recht hatte. Das ist doch gut, dass man
mit Autotrace Explain-Pläne für Selects ohne Ausführung ermitteln kann. Oder?
L.: „ Leider muss man damit auch aufpassen. Wenn Du Deine Einstellung mit der Option
‚statistics' ergänzen würdest (die die Ermittlung der Laufzeitstatistiken verlangt), wird Dein
Select logischerweise ausgeführt.
Search WWH ::




Custom Search