crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> <IDLE> in transaction, как откатить зависшие транзакции
Majestio
  опции профиля:
сообщение 16.4.2013, 14:23
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 67
Регистрация: 13.2.2013
Пользователь №: 3710

Спасибо сказали: 1 раз(а)




Репутация:   1  



PostgreSQL

Ситуация следующая. Программа начала транзакцию и вдруг, по какой-то из причин, отвалилась.
Программный/аппаратный сбой - не суть. В постгрессе появляются "зомби" транзакции. Как их откатить?

Запрос на очередь выполняемых операций:

SELECT now() - query_start, procpid, current_query
FROM pg_stat_activity
WHERE current_query <> '<IDLE>' order by 1;

выдает:
00:00:00 |    4743    | SELECT now() - query_start, procpid, current_query
01:31:22.839672 | 4343 |    <IDLE> in transaction


Запрос на список "зависших" блокировок:

SELECT l.locktype, s.procpid AS process_id, age(now(), s.query_start)
   FROM pg_stat_activity s, pg_locks l
   LEFT JOIN pg_class ON l.relation = pg_class.oid
  WHERE l.pid = s.procpid and l.pid <> pg_backend_pid()                                        
  ORDER BY s.query_start;

выдает:
virtualxid |    4343    | 01:36:05.006294


Ну и как откатить эту заразу? :(

Сообщение отредактировал Majestio - 16.4.2013, 14:24
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 17.4.2013, 21:01
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


может есть что-нибудь типа sweep в Firebird?
Но это из инструментария администратора
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Majestio
  опции профиля:
сообщение 19.4.2013, 10:17
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 67
Регистрация: 13.2.2013
Пользователь №: 3710

Спасибо сказали: 1 раз(а)




Репутация:   1  


Цитата(Litkevich Yuriy @ 17.4.2013, 21:01) *
может есть что-нибудь типа sweep в Firebird?
Но это из инструментария администратора


Кой че нашел, позже потестирую:

select pg_cancel_backend(pid);
select pg_terminate_backend(pid);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Majestio
  опции профиля:
сообщение 20.4.2013, 14:41
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 67
Регистрация: 13.2.2013
Пользователь №: 3710

Спасибо сказали: 1 раз(а)




Репутация:   1  


Вроде кое-чего вырисовывается :p Cделал статейку для себя, смотрите, может и вам пригодится.
Одно "но", пока еще на практике не успел обкатать, в процессе короче ...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 19.4.2024, 12:37