1

Temat: Jak usunąć lock'i z tabel pod Windowsem?

Witam,

mam Postgresa zainstalowanego pod Windowsem. Tworzę aplikację pod SJAS'em.
Podczas developerki padł mi serwer, pozostawiając zalokowane tablice.
Nawet po zresetowaniu komputera, gdy nie mam załadowanego serera aplikacyjnego, widzę, że wpisując polecenie wyświetlenia locków:
select pg_class.relname,pg_locks.* from pg_class,pg_locks where pg_class.relfilenode=pg_locks.relation;
że pozostały locki na tabeli.
"rfp_pkey";"relation";35763;36175;;;;;;;2528113;;"RowExclusiveLock"
"rfp_statusy_slo";"relation";35763;35874;;;;;;;2528113;;"RowShareLock"
"rfp";"relation";35763;35859;;;;;;;2528113;;"RowExclusiveLock"
Uniemożliwiają mi one pracę - nie mogę skasować tabeli, modyfikować jej - no w ogóle nic nie mogę wink
Jedynym wyjściem jakie widzę, to wykasowanie całej bazy danych i postawienie jej od nowa, ale to już ostateczność.

Czy ktoś może mi pomóc w odblokowaniu tabel?
Będę bardzo wdzięczny
B.Mańkowski

2

Odp: Jak usunąć lock'i z tabel pod Windowsem?

Hmm ciekawy problem, juz troche pracuje z postgresem a jeszcze mi sie cos takiego nie przytrafilo smile.
Zasymulowalem sobie twoj problem  (prepared tarnsaction i CTRL+Z i kill psql,postgres smile ) no i rzeczywiscie sie wyklada, przy okazji zablokowane wiersze mozesz sprawdzic tez funckją pg_lock_status(). W moim przypadku mamy doczynienia z two phase commited transaction i wystarczy zatrzymac serwer i oprozniać (albo na wszelki wypadek tylko przenieść gdzieś) zawartość katalogu w pg_twophase w klastrze z baza (katalog pusty powinen zostać). Pytane tylko czy  u ciebie jest ta sama sytuacja.
Melduj czy sie udalo smile.

3

Odp: Jak usunąć lock'i z tabel pod Windowsem?

Działa! Pomogło!
Zrobiłem kopię katalogu pg_twophase w klastrze z baza, usunąłem plik i po zrestartowaniu bazy nie było żadnych lock'ów.
Bardzo dziękuję smile

Ostatnio edytowany przez bmankowski (2008-04-16 08:39:12)