Firebird 2.1: gfix -online возвращает "завершение работы базы данных"
К сожалению, поиск в Google не имеет большого значения, так как в большинстве результатов указан синтаксис включения базы данных после использования. gfix -shut -force 30
(или любое другое количество секунд) как gfix -online dbname
и я побежал gfix -online dbname
с и без учетных данных для рассматриваемой БД.
Я получаю сообщение:
database dbname shutdown
Что хорошо, за исключением того, что я хочу вывести это онлайн сейчас. Не может быть и речи о том, чтобы закрыть fbserver.exe (запущенный на коробке с Windows, на самом деле это Classic Server 2.1.1, но может быть и Super), поскольку у нас есть другие базы данных, работающие на том, что требует почти круглосуточной работы. Сообщение от другого gfix -shut -force
или -attach или -tran является Target shutdown mode is invalid for database dbname
что соответствует документации о том, что происходит, если база данных уже полностью закрыта. Target shutdown mode invalid
сообщение также появляется, если я использую -online single
или же -online multi
, но нет -online
/-online normal
,
Идеи и отзывы очень ценятся, тем более что в данный момент для меня это фактор. Спасибо!
РЕДАКТИРОВАТЬ: единственная причина, по которой я закрыл БД, состоит в том, чтобы очистить "активные" транзакции, которые были связаны с определенным IP-адресом, и этот компьютер - мой терминал разработки (фактически виртуальная машина, где я разрабатываю интерфейсы для программного обеспечения базы данных), но я не было процессов, соединяющихся с базой данных в то время. Они были похожи на осиротевшие транзакции для меня, и они не были в подвешенном состоянии. Запуск ручной очистки не удалил их, удаление строк из MON$STATEMENTS не сработало, хотя Firebird 2.1 якобы поддерживает отмену запросов таким образом. Моим последним средством было "перезапустить" базу данных, отсюда и вышеупомянутая проблема.
РЕДАКТИРОВАТЬ 2: Просто заметил это в примечаниях к выпуску 2.1.3:
Проблема регрессии возникла с реализацией новых режимов выключения gfix, когда shutdown вызывается с опциями -attach или -tran. Если по истечении указанного времени ожидания соединения все еще активны, механизм возвращает сообщение о том, что завершение было неудачным. Однако вместо того, чтобы оставлять базу данных в оперативном состоянии, как это должно быть, она переводит базу данных в некое неопределенное состояние "в автономном режиме", и дальнейшие подключения отклоняются.
я использовал -shut -force 30
так что это не должно быть затронуто. Однако через 30 секунд звонок не вернулся должным образом, и после ожидания примерно 3 минут я закрыл свой tty на сервер (виртуальная машина linux на сервере Windows), который мог прервать или не прервать операцию gfix. Бег ps
не показывает никакие процессы gfix. Хотите знать, поставило ли это базу данных в "неопределенное состояние"...
2 ответа
Использовать онлайн
gfix -user "SYSDBA" -password "masterkey" -online DATA.FDB
после использования базы данных повторите
gfix -user "SYSDBA" -password "masterkey" -shut -force 0 DATA.FDB
У меня тоже была такая же проблема, недавно я сначала остановил службу FB, а затем уничтожил все соединения fbclient на сервере. Перезапустил fbservice и использовал приводящий сервер cmd. надеюсь это поможет