Bonjour ,

J'ai un outil qui me remonte une alerte sur un nombre élevé de curseurs .
Je n'ai pas accés au code sql de cet indicateur .

Je voudrais vérifier le nombre de curseur ouverts pour une session donnée .

Quelle requête dois-je utiliser ?

La doc parle de la vue v$open_cursors mais le résultat ne me semble pas
tout à fait juste :


SQL> select count(*) from v$open_cursor where sid=18 ;

COUNT(*)
----------
516

SQL>
autre requêtes trouvées sur le net qui sont plus précises :

SELECT oc.sid,sql_text ,count(1)
FROM v$open_cursor oc, v$session s
WHERE oc.sid = s.sid and s.sid=18
GROUP BY oc.sid,sql_text
HAVING COUNT(1) > 2
ORDER BY count(1) DESC
;

SID SQL_TEXT COUNT(1)
---------- ------------------------------------------------------------ ----------
18 SELECT Count(ID_PV) FROM POLICE.GPM_PV WHERE ID_PK_MC_PV = 8 457
18 Select count(*) from POLICE.journal where RUBRIQUE like '%Aj 24
18 SELECT DECOUP.CD_SEC FROM POLICE.DECOUP,POLICE.GPM_RUE,POLIC 6
18 SELECT Count(ID_PV) FROM POLICE.GPM_PV WHERE ID_PK_MC_PV = 1 5
18 SELECT COUNT(NUM_P) FROM POLICE.GPM_PHOTO WHERE TYPE_P = 'MC 3

select a.value, s.sid, s.serial#
from v$sesstat a, v$statname b, v$session s
where a.statistic# = b.statistic# and s.sid=a.sid and s.sid=18
and b.name = 'opened cursors current';


VALUE SID SERIAL#
---------- ---------- ----------
467 18 7821


Le paramètre open_cursors est 500 .

ce paramétre est liée à une session , mais est-il lié aussi au code sql utilisé ?

Cordialement