lundi 20 mai 2013

ORA-01000: maximum open cursors exceeded

Si vous avez cette erreur, cela veut dire que le nombre maximum des curseurs ouverts par un utilisateur est atteint. Pour savoir plus le nombre de curseurs ouverts, exécuter cette requête (compte sys as sysdba):


select max(a.value) as open_cur, p.value as max_open_cur
from v$sesstat a, v$statname b, v$parameter p
where a.statistic# = b.statistic#
and b.name = 'opened cursors current'
and p.name= 'open_cursors'
group by p.value


Dans mon cas:

 OPEN_CUR MAX_OPEN_CUR
---------- -----------------------------
        77                 300

Pour régler ce problème de ORA-01000, il faudrait tout d'abord vérifier la valeur de la configuration du paramètre en exécutant cette requête et changer la valeur de ce dernier.

SQL> select name, value from v$parameter where name ='open_cursors'

NAME                                                                             VALUE
---------------------------------------------------------------------------
open_cursors                                                                     300

Pour modifier cette valeur, il faudrait exécuter ceci:
SQL> ALTER SYSTEM SET OPEN_CURSORS=350 SCOPE=MEMORY;

System altered

ATTENTION: SI VOUS VOULEZ CHANGER CE PARAMÈTRE POUR LE PROCHAIN DÉMARRAGE DE L'INSTANCE, IL FAUDRAIT REMPLACER MEMORY PAR SPFILE.
 
SQL> select name, value from v$parameter where name ='open_cursors' ;

NAME                                                                             VALUE
--------------------------------------------------------------------------------
open_cursors                                                                     350

Aucun commentaire:

Enregistrer un commentaire