Database Reference
In-Depth Information
Die Verwaltung der Stored Outlines erfolgt zum Teil über die jeweiligen SQL-Komman-
dos. Für diesen Zweck gibt es auch 2 Packages DBMS_OUTLN und DBMS_OUTLN_EDIT
(im Grunde genommen sind es 2 Public Synonyme jeweils für die Packages OUTLN_PKG
und OUTLN_EDIT_PKG).
14.1.1
Anlegen
Man kann die Stored Outlines für einzelne SQL-Anweisungen anlegen. Das kann man mit
dem Kommando „CREATE OUTLINE“ tun, z. B. folgendermaßen:
FUHDWHRXWOLQHWHVWIRUFDWHJRU\WHVWBFDWRQVHOHFWIURPGXDO
Lässt man die Klausel für die Kategorie weg, wird die jeweilige Outline der Kategorie DE-
FAULT zugeordnet (man kann eine Outline der Kategorie „DEFAULT“ auch explizit zu-
ordnen). Stillschweigend werden Public Stored Outlines angelegt, welche man in einigen
Sessions oder systemweit anwenden kann. Man kann mit diesem Kommando auch so-
genannte private Outlines anlegen, die ihre Gültigkeit nur für die jeweilige Session haben.
Dafür muss man „private outline“ statt „outline“ oder „public outline“ im Create Kom-
mando eingeben. Die privaten Outlines werden intern in den globalen temporären Tabel-
len im Schema SYSTEM abgespeichert. Aus diesem Grund verschwinden sie automatisch
nach dem Beenden der jeweiligen Session. Da solche Outlines die anderen Sessions nicht
beeinflussen, kann man sie für Testzwecke gebrauchen. Für Testzwecke kann man auch
Public Outlines benutzen, wenn man eine spezielle Kategorie dafür anlegt. Solange diese
Kategorie nicht in den anderen Sessions aktiviert wird, bleiben die Outlines aus dieser
Kategorie für diese Sessions unzugänglich. Die privaten Outlines können auch für das Edi-
tieren der Stored Outlines benutzt werden. Dieses Verfahren ist beispielsweise ausführlich
in [18] beschrieben.
Beim Anlegen der Stored Outlines mit dem Kommando „CREATE OUTLINE“ wird die
jeweilige SQL-Anweisung nicht ausgeführt, sondern lediglich geparst. Aus diesem Grund
fixieren die mit dem Kommando „CREATE OUTLINE“ angelegten Stored Outlines den
Explain Plan und nicht den Ausführungsplan. Im Package DBMS_OUTLN gibt es eine
Prozedur CREATE_OUTLINE, mit welcher man eine Stored Outline für einen Cursor in
der SQL-Area anlegen kann. Man könnte denken, dass man damit den jeweiligen Ausfüh-
rungsplan fixieren kann, in der Tat nimmt diese Prozedur lediglich den jeweiligen SQL-
Text aus der SQL-Area. In diesem Fall werden die Outlines den Explain Plan fixieren,
welcher von den aktuellen Optimizer-Statistiken und von der Optimizer-Umgebung der
Session abhängt, in der diese Prozedur ausgeführt wird. Dieses Verhalten kann man mit
dem Skript test_case_stored_outlines.sql nachvollziehen.
Oracle bietet noch eine Möglichkeit für das Anlegen der Stored Outlines an. Wenn
man die Einstellung CREATE_STORED_OUTLINES auf TRUE oder auf einen Katego-
rienamen setzt, werden die Stored Outlines für alle SQL-Anweisungen einer Session oder
Search WWH ::




Custom Search