Newsgroup: it.comp.os.linux.sys
Titolo: [OT] Problema cursori con ORACLE+PHP+APACHE

Ho crato un'applicazione con php & Oracle.....
Non capisco bene di chi siamo il problema (Server/Oracle/Php) ma ogni tanto
(circa ogni settimana) il server inizia a dirmi....
ORA-01000: maximum open cursors exceeded
so' che è un'errore di Oracle ma non capisco come posso risolvere il
problema......... ho già provato ad aumentare il numero di cursori che
possono rimanere aperti ma non capisco perchè ogni volta tornano a
riempirsi.......
utilizzo connessioni persistenti, store procedure, e freestatement con le
librerie OCI8.....
Il server è un'Oracle 8.17, con RedHat 6.2 patchata, Apache 3.19 e 4.0.1pl2
PLEASE HELP ME.........
--
KaMy
http://ff1.fantacalcio.it
http://www.tutorials.it
http://www.kmcount.net

 ORA-01000: maximum open cursors exceeded
Io ho avuto lo stesso problema con una funzione ricorsiva che apriva
un cursore ad ogni ricorsione, inoltre ho poi modificato la mia
applicazione (erano Servlet, ma il concetto e' lo stesso) per usare
un'unica Connection per ogni cursore ed aprire un solo cursore
alla volta. Non ho piu' avuto problemi.
Secondo me hai "dimenticato" qualche cursore aperto...
Davide


Fingerprint = E360 4E59 8290 663E 5079 8C49 60C3 C454 8FDF 8B30
ICQ UIN 21154009

> ORA-01000: maximum open cursors exceeded
d> Io ho avuto lo stesso problema con una funzione ricorsiva che apriva
d> un cursore ad ogni ricorsione,
Per quale motivo una funzione ricorsiva che fa le query ?
--
Gian Uberto| main(){printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}
Lauri      |                        David Korn, 1987 ioccc best one liner 
(aka saint)|-------------------------------------------------------------------
em@ail: 
sa...@eng.it
 ( vedere X-nospam nello header - see X-nospam in header )

Il concetto di cursore è tipico di Oracle. Per elaborare uno statement SQL,
Oracle alloca un'area di memoria chiamata context area che contiene le
informazioni necessarie a completare l'elaborazione come il numero di righe
processate dallo statement, un puntatore alla rappresentazione analizzata
dello statement e il numero di righe ritornate dalla query. Il cursore è il
puntatore alla context area. La gestione corretta dei cursori implica una
gestione corretta dello statement relativo. Questo fatto è usato nella
programmazione con PL/SQL che è il lingaggio di programmazione 3G di Oracle.
Ciao
Kekko


 qualche buon manuale?
Qualunque documentazione di database dovrebbe parlare dei cursori.
Davide

 Per quale motivo una funzione ricorsiva che fa le query ?
Singola tabella che implementa una struttura "ad albero", dovevo
visualizzarla sullo schermo (in una Servlet) ed era la soluzione piu'
veloce. Poi ho scoperto le funzioni specializzate di Oracle...
Davide

 wrote in message
news:9g9khp$7mbq0$1...@ID-18487.news.dfncis.de...


 OCIFreeStatement($result) o OCIFreeCursor($result) ..............
Ma se distruggi lo Statement non distruggi anche il cursore associato?
Davide

> Per quale motivo una funzione ricorsiva che fa le query ?
d> Singola tabella che implementa una struttura "ad albero", dovevo
d> visualizzarla sullo schermo (in una Servlet) ed era la soluzione piu'
d> veloce. Poi ho scoperto le funzioni specializzate di Oracle...
Infatti  era quella  la mia  domanda  sottintesa. Oracle  ha le  query
gerarchiche (mi  pare le chiami cosě)  non ti dico  quanto sono comode
quando devi gestire strutture aziendali :) .


 wrote in message
news:9g9rf2$7mbq0$2...@ID-18487.news.dfncis.de...


dbia...@square.nl
 wrote:

Suona come gli iteratori di libsdtc++ ;-)
