Temat: Co w przypadku crashu klienta?

Cześć, wczoraj dopadł mnie dziwny przypadek i może nic strasznego, gdyby nie częstotliwość.
Scenariusz: mamy bazę i klienta. Klient wykonuje update na tabeli i w tym samym czasie aplikacja kliencka crashuje (z lektury google można założyć, że w przypadku odłączenia zasilania jest to samo), no i na bazie pozostaje blokada na wierszu na którym jest update. I wisiiiiiiii w nieskończoność. Jeżeli to dostrzeżemy robimy kill na sesji... ale to nic nie pomaga, bo pmon chce się skontaktować z klientem żeby go powiadomić o zabiciu sesji... no ale przecież klient już nie istnieje, więc dalej sesja istnieje oznaczona jako kill. Pomaga dopiero zabicie procesu na serwerze.
Najbardziej mnie martwi to, że dopóki nie zabijemy sesji to blokuje ona innych userów używających dość często jednej tabeli.
Macie jakiś sposób na takie przypadki?

konto usunięte

Temat: Co w przypadku crashu klienta?

Aleksander Mathias:


http://www.dba-oracle.com/t_timeout_dead_or_idle_oracl...
Paweł Grzegorz Kwiatkowski

Paweł Grzegorz Kwiatkowski Architekt
oprogramowania,
Ericsson

Temat: Co w przypadku crashu klienta?

Aleksander Mathias:
Macie jakiś sposób na takie przypadki?

Naprawić/zmodyfikować aplikację, która crashuje, więc i tak wymaga naprawy ;-) Można w aplikacji przejść np. na optimistic locking, select for update nowait / wait N, skip locked, tak by tego wiersza nie blokować w nieskończoność.

...albo stosować doraźne rozwiązanie, link, który wkleił Krzysztof, bądź MOS: How to Enable Oracle Net Dead Connection Detection or DCD [ID 160386.1] + notki powiązane.

Temat: Co w przypadku crashu klienta?

Kurde, a trafiałem w poszukiwaniach googlowych na sqlnet_expire_time, ale od razu odrzucałem, bo przecież nie chciałem killować sesji po czasowej nieaktywności...
Bałwan ze mnie, że nie przeczytałem ze zrozumieniem.
Dzięki!



Wyślij zaproszenie do