Database Reference
In-Depth Information
8
Gemeinsame Nutzung der Cursor bei Oracle
(cursor sharing)
Da das harte Parsing ziemlich kostspielig ist, versucht Oracle es möglichst zu vermeiden.
Dafür wird gemeinsame Nutzung der Cursor (cursor sharing) eingesetzt: Wird ein neuer
Cursor geöffnet, schaut Oracle zunächst, ob ein bestehender Cursor für die jeweilige SQL-
Anweisung benutzt werden kann. Ist das der Fall, wird der bestehende Cursor genommen,
und seine Cursor-Statistik für die Anzahl der Parse Calls (in der Spalte PARSE_CALLS der
View V$SQL) wird um 1 erhöht. Wenn Oracle keinen passenden Cursor findet, wird das
harte Parsing gemacht und ein neuer Cursor angelegt. Der Grund, aus welchem keine ge-
meinsame Nutzung der bestehenden Cursor möglich ist, wird dabei normalerweise in der
View V$SQL_SHARED_CURSOR protokolliert.
Peter: „ Welche Cursor werden bei der Suche nach einem passenden geprüft?
Leonid: „ Oracle benutzt dafür s.g. Cursor-Listen. Zu einer sochen Liste gehören die Cur-
sor mit demselben SQL-Text. Innerhalb einer Liste werden die Cursor durchnummeriert (s.
die Spalte CHILD_NUMBER der View V$SQL). Beim Öffnen eines neuen Cursors sucht
Oracle zunächst nach einer Cursor-Liste für den jeweiligen SQL-Text (dabei wird die SQL Id
benutzt, um diese Suche zu beschleunigen). Danach werden die Cursor dieser Liste nachein-
ander überprüft, um einen passenden für die gemeinsame Nutzung zu finden.
P.: „ Verstehe ich richtig, dass eine einzige Cursor-Liste für einen SQL-Text möglich ist?
L.: „ Bei Oracle Releases, bei denen die Längen der Cursor-Listen begrenzt sind, können
mehrere Cursor-Listen für einen SQL-Text entstehen (die Einzelheiten besprechen wir im
Abschn.   8.2 ). Bei der Suche nach einem Cursor für die gemeinsame Nutzung wird aber im-
mer eine einzige Liste benutzt (die Spalte IS_OBSOLETE der View V$SQL hat den Wert 'N'
für die Cursor dieser Liste). Die restlichen Listen (falls vorhanden) sind für diese Suche außer
Gebrauch (die Spalte IS_OBSOLETE der View V$SQL hat den Wert 'Y' für die jeweiligen
Cursor).
Search WWH ::




Custom Search