Notes in-line.

Regards

Jonathan Lewis
http://www.jlcomp.demon.co.uk

  The educated person is not the person
  who can answer the questions, but the
  person who can question the answers -- T. Schick Jr


One-day tutorials:
http://www.jlcomp.demon.co.uk/tutorial.html


Three-day seminar:
see http://www.jlcomp.demon.co.uk/seminar.html
____UK___November


The Co-operative Oracle Users' FAQ
http://www.jlcomp.demon.co.uk/faq/ind_faq.html


----- Original Message ----- 
To: "Multiple recipients of list ORACLE-L" <[EMAIL PROTECTED]>
Sent: Tuesday, December 23, 2003 8:44 PM


> Jonathan,
>
> Wouldn't bind variable issue that prevents cursor from
> sharing be visible in bind_mismatch?

I would certainly hope so - but I remember playing
around with v$sql_shared_cursor when it first came
out and find cases where un-shared cursors came up
with a full set of N's in the view.

> How can one simulate this?
>
> var v varchar2(1)
> begin select count(5) into :v from dual; end;
> /
> select address, sql_text from v$sql where sql_text
> like '%count(5)%';
>
> ADDRESS  SQL_TEXT
> --------
> --------------------------------------------------------------------------
-
> 6DE92A74 SELECT count(5) from dual
> 6DE960D0 begin select count(5) into :v from dual; end;
>
> -- Change a bind variable size:
> var v varchar2(30)
> begin select count(5) into :v from dual; end;
> /
> -- same output, no change, both sql and pl/sql wrapper
> cursors are still shared
>

Nicely done. I think I'd run event 10046
at level 4 as well to get the bind variable dumps
and check if the the SQL (or pl/sql) environment
was ignoring the MAXLEN value for your
variables.  There are a few places where 'special
optimisations' exist in Oracle's internal coding.

You might also try it with the most extreme
case - it may be (for example) that Oracle
rounds up varchar2() variables to 32 bytes -
I'd go for 1 and 4000 - just in case.



> -- Change a bind variable type:
> var v number
> begin select count(5) into :v from dual; end;
> /
> ADDRESS  SQL_TEXT
> --------
> --------------------------------------------------------------------------
--
> 6DE92A74 SELECT count(5) from dual
> 6DE960D0 begin select count(5) into :v from dual; end;
> 6DE960D0 begin select count(5) into :v from dual; end;
>
> -- ok, here pl/sql parent (dep=0) cursor is no longer
> shared
>
> [EMAIL PROTECTED]> select * from v$sql_shared_cursor where
> kglhdpar = '6DE960D0';
>
> ADDRESS  KGLHDPAR U S O O S L S E B P I S T A B D L T
> R I I R L I O S M U T N F
> -------- -------- - - - - - - - - - - - - - - - - - -
> - - - - - - - - - - - - -
> 6DE95B54 6DE960D0 N N N N N N N N N N N N N N N N N N
> N N N N N N N N N N N N N
> 6DE86F94 6DE960D0 N N N N N N N N N N N N N N Y N N N
> N N N N N N N N N N N N N
>
> 2 rows selected.
>
> -- yep, bind variables mismatch
>
> Thanks,
> Boris Dali.
>

-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.net
-- 
Author: Jonathan Lewis
  INET: [EMAIL PROTECTED]

Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
San Diego, California        -- Mailing list and web hosting services
---------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).

Reply via email to