Database Reference
In-Depth Information
SQL> var b1 number
SQL>
SQL> exec :b1:=45;
SQL>
SQL> select count(*) from t1 where a=:b1;
200
SQL> select plan_table_output from table ( sys.dbms_xplan.display_cursor( '','','LAST'));
SQL_ID ara72qm440w33, child number 2
-------------------------------------
select count(*) from t1 where a=:b1
Plan hash value: 3724264953
---------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | | 7 (100)| |
| 1 | SORT AGGREGATE | | 1 | 3 | | |
|* 2 | TABLE ACCESS FULL| T1 | 200 | 600 | 7 (0)| 00:00:01 |
---------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter("A"=:B1)
SQL> define sql_id='ara72qm440w33'
SQL> define per_child='y'
SQL> set echo off
CHILD_NUMBER= 0, OPTIMIZER_MISMATCH=0, BIND_MISMATCH=0
CHILD_NUMBER= 1, OPTIMIZER_MISMATCH=1, BIND_MISMATCH=0
CHILD_NUMBER= 2, OPTIMIZER_MISMATCH=0, BIND_MISMATCH=1
So entsteht der Cursor mit CHILD_NUMBER=2. Keiner der 2 anderen Cursor konnte
gemeinsam genutzt werden, weil sie den anderen Typ der Bind-Variablen benutzen (VAR-
CHAR2). Sie können selber den weiteren Ablauf des Skripts test_case_sql_shared_cursor.
sql verfolgen, wenn Sie dieses Skript ausführen.
8.2
Längen von Cursor-Listen in Oracle 10g und in Oracle 11g
Die maximale Länge von Cursor-Listen war bei Oracle 10g mit 1025 begrenzt. Erreichte
die Länge einer Cursor-Liste den Wert 1026, wurde sie entsprechend gekennzeichnet (IS_
OBSOLETE='Y' in der View V$SQL) und nicht mehr bei der Suche nach einem Cursor für
gemeinsame Nutzung gebraucht. Mit dem folgenden Test-Case kann man das verifizieren
(s. das Skript test_case_cursor_obsolete10.sql).
 
Search WWH ::




Custom Search