[ vokus @ 18.08.2005. 11:45 ] @
Kako da ogranicim vreme izvrsavanja neke SQL komande. Zelim da ako se komanda ne izvrsi nakon 5 min primer, program (stored procedura) produzi dalje ili javi exception.

Imam transparent gateway do jedan MS SQL Server koji nije bas reliable. Dakle moja stored procedura je otprilike ovakva:

begin
insert into tabela_1
select * from sql_link.tabela_2;
commit;
exception
on others
log_insert('Error ' || ErrMsg);
end;

1. Kada je SQL Server OK, onda procedura zavrsi za manje od 1 sekundu.
2. Kada SQL Server uopste ne radi (ne radi ni ping prema njemu) onda procedura ide u exception i tad je OK.
3. Kada SQL Server delimicno radi, onda moja stored procedura udje u select na njegovu tabelu i tu zaglavi.

Neko resenje?
[ vokus @ 18.08.2005. 13:01 ] @
Izgleda da sam ispustio ka kazem da se stored procedura nalazi na Oracle server.

Dakle, Oracle PL/SQL stored procedura poziva preko DB link drugi MS SQL Server i tad nastaje problem koji sam opisao.

Mozda bi ipak trebalo da ova poruka stoju u Oracle forum.

Pozdrav.
[ jajo @ 18.08.2005. 19:00 ] @
Neznam tocno sto to znaci da baza djelomicno radi.
Jel ti je mozda nesto u lock-u?
Jel si probo s kursorom sa nowaitom, mozda bi ga to spasilo, il da kreiras neki view preko linka?
Mozda bi moglo pomoci da napravis neki vanjski blok sa select null from nesto@link, mozda bi to lakse uslo u exception ak je ova tablica velika?
[ vokus @ 19.08.2005. 07:13 ] @
Tablica iz koje se vade podaci je smesno mala. Dnevno se dodaju nekih 10-tak novih redova i ti novi redovi trebaju biti kopirani u glavnu Oracle bazu.

Drugi problem je sto je MS SQL Server zatvoren sistem. Iz proizvodjaca tog sistema nama je dozvoljeno read-only pristup do samo te tabele, inace on prekida support i te takve stvari. Kako je moguce da baza delimicno radi bas i meni nije jasno, samo znam da se problem koji sam opisao desava, ne vrlo cesto, ali jedan put u 10 dana otprilike.

Moja tablica u koju radim insert nije u lock-u. Radi se o nekih 50-ak stored procedura koji se izvrsavaju sekvencijalno svake veceri u jedan job. Kada bas ta problematicna stored procedura zaglavi, onda zaglavi i celi job. Za da bi se i sutra dan izvrsio, sesija zaglavljenog joba mora biti rucno prekinuta.
[ Raspucin @ 19.08.2005. 11:32 ] @
Posto dosta stvari ne znam, (kao i ono baza delimicno radi), evo ti nesto sto bih ja uradio, na tvom mestu, posto kazes da je tabela mala, onda mozes da uradis sledece:

Kreiraj FULL REFRESH snapshot i prebacuj sve te podatke u Oracle, pa probaj da izvrsis proceduru tu. Ako to ne prodje, onda definitivno imas nekih problema u proceduri.

Nista vise ne mogu da ti kazem, jer nista detaljnije nisi rekao.

Pozdrav

[Ovu poruku je menjao Raspucin dana 19.08.2005. u 12:33 GMT+1]
[ jajo @ 19.08.2005. 16:47 ] @
Da, nisi bas u zavidnoj situaciji. Ak je to ono sto mislim da je (Dva dobavljaca softwarea i jedan znacajni korisnik, koji smatra vas odgovornim) mozda mozes tu firmu koja drzi tu sqlserver bazu nagovoriti da vam svaki dan u ponoc spreme podatke u neki fajl i stave negdje na file sustav.
Pa onda ono kaj je u filovima imate kod vas na serveru, a kad nema fajla nema podataka.