Zu Oracle

Bereich:
Versionsinfo:
DBA, SQL
8.1, 9.2, 10.2, 11.1, 11.2
Erstellung:
Letzte Überarbeitung:
01/2004 MP
06/2009 MP
 Als PDF Downloaden!

Stored Outlines

Planstabilität erhalten

Um bewährte Ausführungspläne des kostenbasierten Optimizers bei z.B. Update auf neuere Oracle-Versionen, Schema-Änderungen, setzen neuer Umgebungsvariablen, neuer Statistiken, Reorganisationen oder Systemduplizierung auf eine andere Datenbank zu erhalten und somit die Abfragezeiten zu optimieren, bietet Oracle seit dem Release 8.1.6 die Möglichkeit die einzelnen Anweisungen als Stored Outlines in diverse Kategorien zu speichern.
Um Stored Outlines anlegen zu können, muss der dynamische Initialisierungsparameter "CREATE_STORED_OUTLINES" gesetzt sein. Wird dieser Parameter auf TRUE gesetzt, werden alle SQL-Anweisungen, mit den Schlüsselwörtern CREATE TABLE....AS SELECT, UPDATE, INSERT und DROP in der Kategorie DEFAULT gespeichert. Es können aber auch benutzerspezifische Kategorien angelegt werden, indem der Parameter auf einen aussagekräftigen Namen gesetzt wird. Die Kategorie wird mit setzten des Parameters von Oracle automatisch angelegt.

ALTER SESSION SET CREATE_STORED_OUTLINE=my_Category;

Anschließend werden alle SQL-Befehle in der aktuellen Session incl. deren Ausführungsplänen abgespeichert. Sollte später der gleiche Befehl erneut abgesetzt werden und der Parameter use_stored_outlines (s.u.) wurde gesetzt, wird auf den bestehenden Ausführungsplan zurückgegriffen.
Alternativ können mit dem Befehl CREATE STORED OUTLINES bewährte Anweisungen auch manuell gespeichert werden. Der Benutzer benötigt hierzu das CREATE ANY OUTLINE Privileg. Wird kein Kategoriename angegeben, wird die Outline in der DEFAULT Kategorie gespeichert.
Beispiel:

CREATE OR REPLACE OUTLINE test FOR CATEGORY my_category ON
SELECT e.ename, e.sal*12, d.loc
FROM emp e, dept d
WHERE e.deptno=d.deptno
ORDER BY d.loc


Um die Stored Outlines anschließend nutzen zu können, muss der dynamische Initialisierungsparameter USE_STORED_OUTLINE auf den Kategorienamen gesetzt werden, in dem die gewünschte Outline gespeichert ist und der Anweisungstext muss mit dem in den Outlines gespeicherten Text übereinstimmen.

ALTER SESSION SET USE_STORED_OUTLINE=my_Category;

Wird der Anweisungstext nicht in der angegebenen Kategorie gefunden, wird die DEFAULT Kategorie auf Übereinstimmung geprüft.  Zur Verwaltung von Stored Outlines kann auch das Package OUTLN_PKG genutzt werden.
Stored Outlines werden in den Tabellen OL$ und OL$HINTS des DEFAULT User OUTLN im System Tablespace gespeichert und können somit über einen Export der Tabellen auf andere, identische Datenbanken, die die gleichen Ausführungspläne nutzen sollen, importiert werden.

   exp OUTLN/OUTLN_PW FILE=outl_exp.dmp TABLES=('OL$', 'OL$HINTS')
   imp OUTLN/OUTLN_PW FILE=outl_exp.dmp

Ab Version 11g hat Oracle angekündigt, die Unterstützung von Stored Outlines einzustellen. Stattdessen soll der SQL Profiler verwendet werden.

Suche

Kontakt

Telefon:
  089 6228 6789-0

Telefon (noch gültig):
  089 679090-40

E-Mail Verteiler Monatstipps

Bitte nehmen Sie mich in den Verteiler der monatlichen Tipps & Tricks auf.