Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Maximum open cursors number exceeded?

[es] :: Oracle :: Maximum open cursors number exceeded?

[ Pregleda: 3718 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

vokus
Vojčo Kraljevski
Makedonija

Član broj: 30597
Poruke: 36
62.220.220.*



Profil

icon Maximum open cursors number exceeded?07.08.2004. u 16:39 - pre 216 meseci
Trenutno radim serversku aplikaciju u programskom jeziku Java, koja vrši akviziciju podataka i iste smešta u Oracle bazu pomoći stored procedure na sledeći način:

CallableStatement ps;
ps = c.prepareCall("{call PROC_INSERT(?, ?, ?, ?, ?, ?, ?, ?, ?)}");
ps.setInt(1, iX);
ps.setString(2, strY);
...
ps.execute();
ps.close();

Sve exception-e u Javi hvatam i zapisujem u log fajl. Posle neko vreme u log dobijam poruku "Maximum open cursors number exceeded" i moram da resetujem serversku aplikaciju (što normalno ne bi trebalo da se desi).

Kako da rešim ovaj problem?

Moguće li je da kad se u Oracle pojavi neka greška da tad ostane kursor nezatvoren? Kako bi mogao u Oracle procedure ili funkcije da hvatam exceptions?
Vojčo
 
Odgovor na temu

CandyMan

Član broj: 3420
Poruke: 147



+49 Profil

icon Re: Maximum open cursors number exceeded?07.08.2004. u 22:21 - pre 216 meseci
Pretpostavljam da ti je Google dao zadovoljavajuće rezultate, ali za svaki slučaj:
http://www.orafaq.com/error/ora-01000.htm

U napred se izvinjavam ukoliko potcenim tvoje znanje.

Ovako,
moja prva pretpostavka jeste da procedura nije dobro napisana. Ukoliko ti nije problem, uradi copy/paste koda ili nečeg što liči na kod pomenute procedure, pa ćemo da vidimo šta ne valja.

Svaka procedura otprilike izgleda ovako:
Code:

procedure Ime_Procedure(parametar1 in out tip_parametra)
...
begin
 ... 
exception
  when EXCEPTION1 then
    neki_kod1;
  when EXCEPTION2 then
    neki_kod2;
  ...
end;


Lepi primeri (opet Google)
http://www.cise.ufl.edu/help/d...dev.920/a96624/07_errs.htm#725
http://www.hk8.org/old_web/oracle/langpkt/ch01_10.htm

E sad, kaži šta dalje, da bi izbegli proizvoljnosti...


Nisam ni znao da znam dok nisam prob'o!
 
Odgovor na temu

vokus
Vojčo Kraljevski
Makedonija

Član broj: 30597
Poruke: 36
62.220.220.*



Profil

icon Re: Maximum open cursors number exceeded?07.08.2004. u 23:37 - pre 216 meseci
Hvala na linkovima. Tokom sledećih dana probaću da uradim nešto.

Evo jedna procedura, ostale su skoro iste:

Code:

create or replace PROCEDURE "NEWDPFS" (
 nAlType         in ALARMS.ALARM_TYPE_ID%type,
 strBSC_ID       in BS_CONTROLERS.STR_ID%type,
 dateStart       in ALARMS.TIME_START%type,
 nAlarmSeq       in ALARMS.ALARM_NUMBER%type,
 strDPFS_DIP     in ALARM_DPFS.DIP%type,
 strDPFS_FAULT   in ALARM_DPFS.FAULT%type,
 strDPFS_DIPEND  in ALARM_DPFS.DIPEND%type,
 strDPFS_HG      in ALARM_DPFS.HG%type,
 strDPFS_SECTION in ALARM_DPFS.SECTION%type,
 strDPFT_STATE   in ALARM_DPFS.STATE%type
)
is
  nbscid NUMBER;
begin
  SELECT BSC_ID INTO nbscid FROM BS_CONTROLLERS WHERE LOGIC_NAME = strBSC_ID;
  insert into ALARMS
        (TIME_START, ALARM_TYPE_ID, ALARM_NUMBER, BSC_ID, ALARM_ID)
    VALUES
        (dateStart, nAlType, nAlarmSeq, nbscid, ALARM_SEQ.NextVal);
  insert into ALARM_DPFS
        (DPFS_ID, ALARM_ID, DIP, DIPEND, FAULT, HG, SECTION, STATE)
    VALUES
        (DPFS_SEQ.NextVal, ALARM_SEQ.CurrVal, strDPFS_DIP, strDPFS_DIPEND, strDPFS_FAULT, strDPFS_HG, strDPFS_SECTION, strDPFS_STATE);
end;


Ako imaš neku primedbu slobodno kaži.

Pozdrav.
Vojčo
 
Odgovor na temu

noctua

Član broj: 10671
Poruke: 185
*.rcub.bg.ac.yu



Profil

icon Re: Maximum open cursors number exceeded?09.08.2004. u 08:19 - pre 216 meseci
Pozdrav!

ja cu laicki da uskocim u ovu temu bez da analiziram kod:
Mozda ti je broj otvorenih kursora limitiran na suvise malu vrednost. Prilikom instalacije prazna baza ima postavljen max broj kursora na (cinimi se) 300.
E, postavljaju se pitanja: da li se neko igrao i menjao te vrednosti; koliko ima korisnika koji rade nesto nad bazom dok ti pokusavas da izvrsis svoju aplikaciju (moguce da su drugi vec pootvarali kursore i zauzeli resurse pa ti sa nekoliko iteracija prekoracis limit...); sta se sve nalazi u toj bazi (ukoliko se tu umuvao i neki AS ili nesto slicno, onda je on "pojeo" dobar deo kursora)...
A moguce je i da je greska u samom kodu :)
Testiraj malo (razlicit broj trenutno aktivnih korisnika/aplikacija/...) pa javi sta se desava...
http://noctua4u.blogspot.com
http://moourl.com/shfb0
..:: Aquila non captat muscas ::..
 
Odgovor na temu

me-tuzalem
mensur tuzalemovic
novi pazar

Član broj: 25730
Poruke: 116
193.203.11.*



Profil

icon Re: Maximum open cursors number exceeded?09.08.2004. u 08:32 - pre 216 meseci
Koliko ja vidim, trebalo bi da u okviru

Code:
catch(Excpetion e){
// imaš
       ps.close(); // naravno i to ide u try ... catch

}



Tako ćeš pozatvarati Statemente, a to je ono što prouzrokuje grešku.
To što u glavnom delu koda imaš ps.close() je OK kada nema greške, ali kada se dogodi Exception, a on se događa u okviru ps.execute(), ostaje Statement otvoren, i tako se malo po malo arče resursi.
 
Odgovor na temu

vokus
Vojčo Kraljevski
Makedonija

Član broj: 30597
Poruke: 36
62.220.220.*



Profil

icon Re: Maximum open cursors number exceeded?09.08.2004. u 22:36 - pre 216 meseci
Mislim da je ograničenje broja otvorenih kursora (zadano od administratora baze) nije problem, zato što program radi nekoliko dana, a nakon toga otkako je nekako izotvarao te kursore, non-stop se dobija poruka da je maksimum otvorenih kursora postignut - više ni jednom se ne startuje neka stored procedura.

A plus to i onako nemam administratirske privilegije na bazu.
Vojčo
 
Odgovor na temu

me-tuzalem
mensur tuzalemovic
novi pazar

Član broj: 25730
Poruke: 116
193.203.11.*



Profil

icon Re: Maximum open cursors number exceeded?10.08.2004. u 09:17 - pre 216 meseci
Hej, Vokus,
ne čitaš odgovore.
Definitivno je problem u tome što nakon Exceptiona u okviru catch bloka, MORAŠ da imaš

Code:
ps.close()


Imao sam svojevremeno sličan problem i definitivno je tako otklonjen. Nisu te valjda moje greške u kucanju zbunile?
 
Odgovor na temu

trivuns
novi sad

Član broj: 31720
Poruke: 6
*.metrohive.net



Profil

icon Re: Maximum open cursors number exceeded?12.08.2004. u 08:56 - pre 216 meseci
Ti samo otvaraš kursore, i naravno da je posle par dana...
@me-tuzalem dobro zbori
 
Odgovor na temu

[es] :: Oracle :: Maximum open cursors number exceeded?

[ Pregleda: 3718 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.