Я использую VPN (Endpoint Security, Check Point) для установки соединения с базой данных Firebird 2.1 из IBExpert на моем компьютере. Иногда я просто забываю отключиться от базы данных и отменяю/отключаю только сеанс VPN.
Когда я снова подключаюсь к VPN и базе данных, я вижу в mon$attachments, что предыдущее соединение/приложение все еще существует, и его неразрешенные транзакции вызывают ошибки взаимоблокировки (которые относятся к предыдущему приложению - это можно точно проверить с помощью номер транзакции, указанный в сообщении об ошибке взаимоблокировки).
Итак, VPN иногда сохраняет сеансы, и эти сеансы VPN сохраняют вложения Firebird.
Есть ли способ, как я могу (используя соединение SYSDBA) завершить эти другие вложения Firebird из моего текущего сеанса Firebird?
Я связался с администратором VPN, чтобы отменить сеансы VPN, но это требует времени. Об отключении базы данных не может быть и речи - БД находится в рабочем режиме. Итак, завершение вложений Firebird с помощью SQL - единственный оставшийся для меня вариант - если такой вариант вообще существует?
Я отключился от сети VPN, но я предположил, что VPN может сохранять какой-то туннель, соединение, хендл, я не знаю. Я знаю, что Firebird удаляет mon$attachments из отключенного соединения. В моем случае я отключился от VPN, но Firebird сохранил записи mon$attachments, что означает, что у Firebird все еще есть какие-то чувства для существующего соединения или какого-либо другого ресурса, связанного с сокетом.
да, я тоже так предполагаю. Так что, возможно, вместо этого вы поговорите со своим администратором о настройках VPN? Так что, если вы намеренно отключитесь, это разорвет соединение с обеих сторон? Или сделайте небольшой тайм-аут, а затем прервите его. Или дать вам какой-то инструмент, чтобы разорвать ваши связи? Исправление VPN, а не Firebird. Тогда у VPN может быть смысл сохранять воображаемое соединение, когда базовое реальное соединение было потеряно. Типа плохо, обрывает телефонную связь. VPN может скрыть это и создать иллюзию непрерывного соединения с иногда очень низкой скоростью.
Однако этого не должно происходить при правильном отключении VPN (в отличие от базового модема или другого подключения). Когда вы приказываете своему VPN-инструменту разорвать соединение, он должен сделать это на обоих концах. Вот почему я думаю, что у вас действительно проблема с неправильной настройкой VPN, а не с неправильной настройкой FB.
В Firebird 2.5 и более поздних версиях вы можете удалить соединение из MON$ATTACHMENTS
, чтобы разорвать соединение. Насколько мне известно, это не поддерживается таблицами мониторинга в Firebird 2.1.
Учитывая, что даже версия Firebird 2.5 устарела, а версия Firebird 2.1 устарела с 2014 года, вам действительно следует подумать об обновлении.
Обычно Firebird использует параметр сокета SO_KEEPALIVE для обнаружения мертвых соединений, но это может занять много времени (в зависимости от конфигурации вашей ОС). Альтернативой может быть настройка dummy_packet_interval
в firebird.conf на ненулевое значение (значение равно секундам, поэтому установите его на разумное (читай, не слишком низкое) значение).
I have contacted the VPN administrator to cancel VPN sessions,
- я не понимаю. Вы говорите, что уже отменили сеанс VPN, зачем вам администратор, чтобы отменить его еще раз? Чего он вообще должен достичь?