Database Reference
In-Depth Information
lung
cursor
_
sharing
=
similar
können mehrere Cursor entstehen. Ein neuer Cursor wird
angelegt, wenn
− kein Cursor mit systemgenerierten Bind-Variablen für die jeweilige SQL-Anweisung
existiert oder
− mindestens ein Cursor mit systemgenerierten Bind-Variablen für die jeweilige SQL-
Anweisung angelegt ist, darunter aber kein Cursor mit den Bind-Werten, die mit den
Literalen der jeweiligen SQL-Anweisung übereinstimmen (wenn solch ein Cursor
bereits existiert, wird dieser Cursor für die jeweilige SQL-Anweisung benutzt). Für
das Anlegen eines neuen Cursors muss noch eine Bedingung erfüllt werden: Es müs-
sen Histogramme für die Spalten aus den Prädikaten der jeweiligen SQL-Anweisung
existieren, die für diese Prädikate auszuwerten sind.
Peter: „
Verstehe ich richting, dass Oracle dieselbe Anzahl der Cursor mit systemgenerierten
Bind-Variablen bei der Parametereinstellung
cursor
_
sharing
=
similar
wie bei der Parame-
tereinstellung
cursor
_
sharing
=
exact
für eine SQL-Anweisung mit verschiedenen Literalen
erzeugen kann?
“
Leonid: „
Du verstehst das richtig. Wenn keine Histogramme für die Spalten aus der Whe-
re-Bedingung einer SQL-Anweisung mit Literalen vorhanden sind (welche Oracle für die je-
weilige Prädikate anwenden kann), wird ein einziger Cursor bei der Parametereinstellung
cursor
_
sharing
=
similar
angelegt. Ansonsten wird ein Cursor mit systemgenerierten Bind-
Variablen pro einen Satz der Literale erzeugt. Das Skript test_case_cursor_sharing0_10.sql
demonstriert das.
“