Как убить вложение/соединение Firebird (2.1), если для сеанса базы данных использовался VPN

Я использую VPN (Endpoint Security, Check Point) для установки соединения с базой данных Firebird 2.1 из IBExpert на моем компьютере. Иногда я просто забываю отключиться от базы данных и отменяю/отключаю только сеанс VPN.

Когда я снова подключаюсь к VPN и базе данных, я вижу в mon$attachments, что предыдущее соединение/приложение все еще существует, и его неразрешенные транзакции вызывают ошибки взаимоблокировки (которые относятся к предыдущему приложению - это можно точно проверить с помощью номер транзакции, указанный в сообщении об ошибке взаимоблокировки).

Итак, VPN иногда сохраняет сеансы, и эти сеансы VPN сохраняют вложения Firebird.

Есть ли способ, как я могу (используя соединение SYSDBA) завершить эти другие вложения Firebird из моего текущего сеанса Firebird?

Я связался с администратором VPN, чтобы отменить сеансы VPN, но это требует времени. Об отключении базы данных не может быть и речи - БД находится в рабочем режиме. Итак, завершение вложений Firebird с помощью SQL - единственный оставшийся для меня вариант - если такой вариант вообще существует?

I have contacted the VPN administrator to cancel VPN sessions, - я не понимаю. Вы говорите, что уже отменили сеанс VPN, зачем вам администратор, чтобы отменить его еще раз? Чего он вообще должен достичь?
Arioch 'The 16.03.2022 15:44

Я отключился от сети VPN, но я предположил, что VPN может сохранять какой-то туннель, соединение, хендл, я не знаю. Я знаю, что Firebird удаляет mon$attachments из отключенного соединения. В моем случае я отключился от VPN, но Firebird сохранил записи mon$attachments, что означает, что у Firebird все еще есть какие-то чувства для существующего соединения или какого-либо другого ресурса, связанного с сокетом.

TomR 16.03.2022 16:09

да, я тоже так предполагаю. Так что, возможно, вместо этого вы поговорите со своим администратором о настройках VPN? Так что, если вы намеренно отключитесь, это разорвет соединение с обеих сторон? Или сделайте небольшой тайм-аут, а затем прервите его. Или дать вам какой-то инструмент, чтобы разорвать ваши связи? Исправление VPN, а не Firebird. Тогда у VPN может быть смысл сохранять воображаемое соединение, когда базовое реальное соединение было потеряно. Типа плохо, обрывает телефонную связь. VPN может скрыть это и создать иллюзию непрерывного соединения с иногда очень низкой скоростью.

Arioch 'The 17.03.2022 22:10

Однако этого не должно происходить при правильном отключении VPN (в отличие от базового модема или другого подключения). Когда вы приказываете своему VPN-инструменту разорвать соединение, он должен сделать это на обоих концах. Вот почему я думаю, что у вас действительно проблема с неправильной настройкой VPN, а не с неправильной настройкой FB.

Arioch 'The 17.03.2022 22:12
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
4
23
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В Firebird 2.5 и более поздних версиях вы можете удалить соединение из MON$ATTACHMENTS, чтобы разорвать соединение. Насколько мне известно, это не поддерживается таблицами мониторинга в Firebird 2.1.

Учитывая, что даже версия Firebird 2.5 устарела, а версия Firebird 2.1 устарела с 2014 года, вам действительно следует подумать об обновлении.

Обычно Firebird использует параметр сокета SO_KEEPALIVE для обнаружения мертвых соединений, но это может занять много времени (в зависимости от конфигурации вашей ОС). Альтернативой может быть настройка dummy_packet_interval в firebird.conf на ненулевое значение (значение равно секундам, поэтому установите его на разумное (читай, не слишком низкое) значение).

Другие вопросы по теме