Hej!

Od 3 dni walcze z jedna ciekawostka...

Polaczenie z biura do naszych baz danych idzie przez tunele VPN. Z mojej podsieci mamy nielimitowany dostep do tej grupy serwerow ktorej potrzebujemy. Mamy oprogramowanie napisane w Perl'u z uzyciem DBI i calej sterty wlasnych modulow...

Oprogramowanie dziala pod apache2 i fast-cgi. Do poprawnego biegu program wymaga dostepu do bazy Oracle (stary 8.1.5) i 2 baz pomocniczych MySQL. Kazda baza znajduje sie na innym kontynencie akurat ale ze to idzie przez VPN to nie ma znaczenia - w koncu u innych dizala...

No wlasnie - co dziala a co nie?

Debian 3.x Sarge/4.x Etch, Ubuntu 6.04/6.10 z apache1.3.x/2.0.x i perl 5.6/5.8 dziala doskonale - DBI (DBD::mysql i DBD::Oracle) lacza sie ladnie, wykonuja wszelkie zapytania i juz... Do tego warto zauwazyc ze dla tej jednej zabytkowej wrecz bazy uzywamy klienta Oracle 9.2 - zawsze dzialalo...

... ale po przesiadce na Ubuntu 7.04 przestalo :-(

Objawy sa takie, ze skladamy w locie zapytanie SQL (parametryzowane aby nie bylo sql-injection), $dbh->prepare jest ok, dochodzimy do execute... no i tu sa problemy - zapytanie poprawne, czasami sie wykona czasami nie... generalnie jak pracuje z domu to tak... jak z biura to nie... i to na tym samym laptopie!

Ciekawostka jest taka, ze sqlplus (klient tekstowy) tez ma problemy - ale bez zadnej reguly - tylko czasami...

Kod:
sqlplus> SELECT dummy FROM DUAL;
to zadziala...

Kod:
sqlplus> SELECT surname FROM dev_user.registered WHERE upper_username = 'TEST';
to tez zadziala...

Kod:
sqlplus> SELECT * FROM DUAL;
... jak ma ochote to zadziala... a jak nie to zawiesi terminal i zima... to samo dla kazdego innego SELECT'a... jesli uzywam * do okreslenia kolumn to zdycha.

Co ciekawe - jak pracuje z domu to dziala doskonale... poza tym zdycha tylko w przypadku jednej tabeli... co ciekawe sniffit zapisuje dane odsylane przez baze, wiec wiem ze Oracle odpowiada ale z jakiegos powodu nie dociera do mnie juz informacja o zakonczeniu SELECT'a i caly proces wisi - az go nie ubije timeout...

Aby bylo jeszcze ciekawiej - na tej samej maszynie pod VMWare mam odpalonego Debiana Etch i na nim nigdy sie nic nie zacina - widac wiec ewidentnie ze to wina Ubuntu ale tylko w specyficznych warunkach.

Podczas instalacji DBD::Oracle testy zawsze wywalaja sie z bledem - na kazdym Ubuntu 7.04 jakie testowalem - nie udalo mi sie tego bledu zreplikowac na zadnym innym systemie w zadnej innej konfiguracji.

Wlasnie analizje przebieg pracy sqlplus z ldd i gdb... moze cos znajde...
Jesli ktos ma jakies pomysly to prosze o podpowiedz bo mnie krew zalewa...

No coz... chyba przestane chodzic do pracy i bede pisal oprogramowanie w domu