Database Reference
In-Depth Information
Diese View enthält viele Spalten. In den meisten davon werden die Gründe abgespeichert,
aus denen keine gemeinsame Nutzung der bestehenden Cursor möglich ist. Enhält solch
eine Spalte den Wert 'Y', ist der jeweilige Grund hinfällig. Z. B. der Wert 'Y' in der Spalte
OPTIMIZER_MISMATCH bedeutet, dass die Optimizer-Umgebung des neuen Cursors
sich von den Optimizer-Umgebungen der bestehenden Cursor unterscheidet und keiner
von ihnen aus diesem Grund gemeinsam genutzt werden konnte.
Der Aufbau der View V$SQL_SHARED_CURSOR wurde von Oracle mehrmals ver-
ändert: einige Gründe fielen weg, einige andere kamen hinzu. In Oracle Relase 11.2.0.2
wurde diese View um die neue Spalte REASON erweitert. Diese Spalte enthält die jeweili-
gen Gründe und einige andere Informationen im XML-Format.
Wenn der angelegte Cursor der einzige für den jeweiligen SQL-Text ist, gibt es kei-
ne Cursor, die Oracle für die jeweilige SQL-Anweisung hätte gemeinsam nutzen können.
Dementsprechend enthalten alle jeweiligen Spalten der View V$SQL_SHARED_CURSOR
den Wert ‚N' und sind von keinem besonderen Interesse für die Analyse. Ganz anders ist es,
wenn eine Cursor-Liste stark anwächst. In diesem Fall kann die View V$SQL_SHARED_
CURSOR für die Klärung der Gründe sehr behilflich sein.
Peter: „ Ist das Problem mit der angewachsenen Cursor-Liste identisch mit dem Problem,
dass viele Versionen eines Cursors (version count) entstehen?
Leonid: „ Das ist dasselbe Problem, weil man die verschiedenen Cursor für einen SQL-Text
als die Versionen eines Cursors versteht.
Fangen wir mit dem Test-Case an, welcher demonstriert, wie die View V$SQL_
SHARED_CURSOR gefüllt wird. Unten benutze ich die Ausgabe des Skripts test_case_
sql_shared_cursor.sql für die Datenbank von Oracle 11.2.0.3. Für die Abfrage der View
V$SQL_SHARED_CURSOR wird dort das Hilfsskript sql_shared_cursor10g.sql benutzt.
Dieses Skript kann die Daten aus dieser View in der folgenden Form ausgeben:
• fürdieeinzelnenCursor(wieimSkripttest_case_sql_shared_cursor.sql)und
• ineinerkumuliertenForm.BeidieserDarstellungwerdendiejeweiligenWertesum-
miert.
Aus diesem Grund sieht man in der Ausgabe den Wert 1 statt 'Y' und den Wert 0 statt 'N' .
In diesem Test-Case wird eine Tabelle  T1 mit 2 nummerischen Spalten „A“ und „B“
abgefragt. Dafür wird eine SQL-Anweisung mit der Bind-Variablen für die Spalte „A“ be-
nutzt. Bei der ersten Abfrage benutzt man die Bind-Variable vom Typ VARCHAR2.
SQL> var b1 varchar2(10)
SQL>
SQL> exec :b1:='45';
PL/SQL-Prozedur erfolgreich abgeschlossen.
SQL> select count(*) from t1 where a=:b1;
COUNT(*)
----------
200
Search WWH ::




Custom Search