High version count

  • From: amit poddar <amit.poddar@xxxxxxxx>
  • To: oracle-l@xxxxxxxxxxxxx
  • Date: Tue, 14 Nov 2006 11:08:41 -0500

Hi folks,

Following is an extract from metalink bug: 5406524

"- A session has to load row cache data using dictionary SQL - The cursor for this gets closed but is cached - The cursors heap 6 gets flushed (by flush shared_pool in the test but could be from natural shared pool flushing over time) - The LOCK on it is then marked BROKEN - Some new session issues a hard parse which needs to load some row cache data so issues the same dictionary SQL statement . - *It cannot use the child with the missing heap 6 and it cannot replace that child as it has a broken lock on it so a new version gets created. . * - This cycle over time can lead to multiple versions of the cursor with all "N" in V$SQL_SHARED_CURSOR. "

From this it seems that a new version of sql is created whenever heap 6 of a sql is flushed out of the shared pool and the kgllock is broken.

My question is this also true when a cursor is invalidated. (i.e. a new version is created instead of recreating the existing invalid child)

thanks
amit



Other related posts:

  • » High version count