powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Rollback чужих транзакций
25 сообщений из 62, страница 2 из 3
Rollback чужих транзакций
    #38504435
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
давайте вернемся к исходному вопросу.

Freddie26Всемирная паутина говорит о грубости работы -gfix и о куче минусов. Я честно говоря только на словах знаю про -gfix, понимаю что там большой функционал, но не разу ее не запускал. Однако те кто из сотрудников запускал говорят: "совместно придуманное нами решение лучше". Работает примерно по тому же принципу, но результат лучше и быстрее получается.
Прошу ответить, хотя бы на часть

- о какой "грубости работы gfix и куче минусов" говорит всемирная паутина? Ссылки, мнения.
- в чем состоит "совместно придуманное нами решение"? Если не секрет. Если только речь не про мифическую "отмену транзакций".

по крайней мере в ваших сообщениях я вижу ряд противоречий. С одной стороны, поврежденные БД у пользователей, с другой стороны, висячие коннекты, с третьей - падение сервера по отсутствию питания. Т.е. в кучу намешано всякого, а вот выводы непонятно какие.
...
Рейтинг: 0 / 0
Rollback чужих транзакций
    #38504446
Фотография kgb ussr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv...
по крайней мере в ваших сообщениях я вижу ряд противоречий. С одной стороны, поврежденные БД у пользователей, с другой стороны, висячие коннекты, с третьей - падение сервера по отсутствию питания...

Ты знаешь, может быть все, что угодно.
Я позавчера наблюдал за работой пользователя, в режиме "удаленного рабочего стола". Все говорит, хорошо, только "некоторая нестабильность".

Так вот, мужик запустил клиентское приложение, тут же его "убил" с помощью диспетчера задач, снова запустил, снова убил - "подвисает". Потом пошел, "перезагрузил сервер". "Сервер" (там, где FireBird и база) - это ноут одного из сотрудников, который периодически впадает в спячку, когда хозяин им не пользуется.
...
Рейтинг: 0 / 0
Rollback чужих транзакций
    #38504447
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kgb ussr,

да я представляю, что в таких местах происходит, но вот мне не очень ясно, что за выводы и на каком основании делают "старшие товарищи", которых мы тут, похоже, в глаза не видели.
Самые проблемные разработчики - это те, которые ни с кем не общаются, и никогда нигде не спрашивают. Вот Freddie26 - исключение, и это хорошо, но неясно, кто там рядом наводит тень на плетень.
...
Рейтинг: 0 / 0
Rollback чужих транзакций
    #38504450
Freddie26
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv,

по ссылке http://www.firebirdsql.org/manual/gfix-dbverify.html есть такая фраза как Using the -mend option can lead to silent deletions of data because gfix doesn't care about internal database constraints like foreign keys etc, the -mend option simply says to gfix "go ahead and clean out anything you don't like" . Под грубостью я подразумевал потерю информации. В целом я только это и имел в виду, потому что нужно восстановить базу с минимальными потерями.

Решение состоит в том чтобы брать пустую базу идентичную поврежденной, удалять в ней PK, FK, UQ, отключать и удалять индексы, отключать триггеры, затем копировать битую базу в пустую, правим поля на которые в последствии будут восстанавливаться FK, а именно для FK у которых значение ON DELETE = CASCADE удаляем записи, для SET NULL устанавливаем значение поля в NULL.
затем восстанавливаем все PK, FK, UQ, индексы, активируем триггеры и пересчитываем статистику индексов. Для битой таблицы решения пока не было придумано, потому восстанавливаем ее из backup'a

Баз несколько. все находятся у пользователей. за ними зачастую никто не следит на сколько мне известно. было предположено что некоторые повреждения могут быть вызваны отключением питания. второй проблемой явилось обновление базы "на горячую".
хочу извиниться. откат чужих транзакций мне нужен был для того чтобы предотвратить ошибки, которые могут возникнуть при обновлении базы "на горячую", поэтому мне необходимо по заданию отключить пользователей и откатить неподтвержденные транзакции (если я правильно понял), затем уже обновлять БД. Я ошибочно связал откат транзакций с причиной поломки БД

Хотелось бы отметить, что идея написания своей утилиты заключается в том, что баз много. периодически сотрудники (до моего прихода) сталкивались с необходимостью ремонтировать их (раньше они это делали при помощи -gfix, приходилось часами работать с базой, чтобы достичь хоть какого то восстановления). утилита должна свести к минимуму общение с пользователем и максимально восстановить данные. также восстанавливать БД дорого если обращаться к специалистам или покупать специальные программы для их восстановления, которые гарантировали бы 50% результат (наверно с предложенной вами программой не сталкивались или повреждения серьезные что такой низкий шанс на восстановление врать не буду не знаю)

А узнаем о повреждении базы по звонкам клиентов у которых ошибки при обращении к базе. Администратор одной из баз в частности не может сделать backup. Меня не сильно интересовали вопросы как узнают у нас в офисе о повреждении БД, но по факту когда пытаешься сделать выборку из некоторых таблиц вылетает ошибка(то на Firebird ругается, то длина поля превышена)
...
Рейтинг: 0 / 0
Rollback чужих транзакций
    #38504454
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kgb ussrТак вот, мужик запустил клиентское приложение, тут же его "убил" с помощью диспетчера задач, снова запустил, снова убил - "подвисает". Потом пошел, "перезагрузил сервер". "Сервер" (там, где FireBird и база) - это ноут одного из сотрудников, который периодически впадает в спячку, когда хозяин им не пользуется.
Я бы в пераую очередь не писал утилиту а:
- настроил ноут что бы не засыпал
- отрубил бы руки пользователю за "запустил, срубил". Причем отрубил бы сразу по самые уши
...
Рейтинг: 0 / 0
Rollback чужих транзакций
    #38504455
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Freddie26Под грубостью я подразумевал потерю информации.
сюрприз - но повреждение БД это всегда потеря какой то информации. Часто последних введенных данных, и тех, где повреждены сектора диска, и т.п.
И без gfix -mend могут быть повреждения как мастер-записей, так и деталей, и их все равно придется удалять. Ну или долго и нудно их восстанавливать, только "восстановить" такие записи можно только по памяти. Например, убилась запись клиента А, остались его заказы, и мы помним, что это клиент А, а не кто-то другой. А можем и не помнить.
Freddie26Решение состоит в том чтобы брать пустую базу идентичную поврежденной, удалять в ней PK, FK, UQ, отключать и удалять индексы, отключать триггеры, затем копировать битую базу в пустую
ну, IBPump есть для этого.
Freddie26а именно для FK у которых значение ON DELETE = CASCADE
в нормальных базах нет таких ФК. То есть, в здравом уме каскадно записи никто не удаляет.
Freddie26второй проблемой явилось обновление базы "на горячую".
не совсем понятно, что это значит.
Freddie26раньше они это делали при помощи -gfix, приходилось часами работать с базой, чтобы достичь хоть какого то восстановления
Freddie26ну да, мы поэтому и сделали FBFirstAid, но все равно тут гарантий что не будет удаленных ПК-ФК нет.
также восстанавливать БД дорого если обращаться к специалистам или покупать специальные программы для их восстановления, которые гарантировали бы 50% результат (наверно с предложенной вами программой не сталкивались или повреждения серьезные что такой низкий шанс на восстановление врать не буду не знаю)
с моей точки зрения все это чешуя. База может убиться целиком, а может повредиться совсем чуть. Для пользователя "восстановление БД" означает ее 100% восстановление, чего практически никогда не бывает. В вашем случае "50% результат" тоже не гарантирует работоспособности БД с приложением.
Исходя из примера выше, при повреждении записи с клиентом А, программа никогда не увидит заказы, оставшиеся от этого клиента, просто потому что разработчику и в голову не может прийти такая ситуация (и это нормально).
Ну и экономить деньги клиентов не надо. Они должны платить за свою дурость, если не делают резервные копии (и если разработчик позаботился предупредить об этом клиента). Повреждения бывают разные, как я уже сказал.
Как вы думаете, бывают у нас базы, которые вообще невозможно восстановить, и нет никаких бэкапов?

В целом, конечно, идея может имеет какой-то смысл, ведь у разработчика БД всегда есть "образец базы". Впрочем, посмотрите на наш Extractor.
http://ib-aid.com/download/IBFirstAIDDiagnostician.exe
описание тут
http://ib-aid.com/articles/item153
...
Рейтинг: 0 / 0
Rollback чужих транзакций
    #38504460
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Freddie26Меня не сильно интересовали вопросы как узнают у нас в офисе о повреждении БД, но по факту когда пытаешься сделать выборку из некоторых таблиц вылетает ошибка(то на Firebird ругается, то длина поля превышена)
Рукалицо. Походу кто-то из разработчиков сделал скрипт, который меняет длину варчар-поля через правку системных таблиц, у пользователей вылезает сообщение FB об обрезке строки, и разработчики бросаются чинить базу через совершенно немыслимые телодвижения.
Фредди, огромная просьба - выложи хотя-бы три разные "ошибки БД". Только не пересказ, а полный текст. Без этого непонятно, что там у вас за повреждения. Есть подозрение, что вырубание сервера и "поломка базы" - никак не связаны.
...
Рейтинг: 0 / 0
Rollback чужих транзакций
    #38504462
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Freddie26> правим поля на которые в последствии будут восстанавливаться
Freddie26> FK, а именно для FK у которых значение ON DELETE = CASCADE
Freddie26> удаляем записи, для SET NULL устанавливаем значение поля в NULL.

А почему вы уверены, что это правильно?
Тем более, если делать это не вручную и
от безвуходности, а автоматом?

Freddie26> обновлении базы "на горячую"

А что это такое? Может, Вы, наконец,
начнёте не свои термины выдумывать,
а либо общепринятые использовать?
Или хотя бы более простыми словами
описывать - длиннее, но понятнее.

> Администратор одной из баз в частности не может сделать backup

Так может не утилиту писать, а просто
еженочный бэкап всем настроить?
Или даже написать "утилиту", которая
этот самый бэкап и будет делать. :)

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Rollback чужих транзакций
    #38504463
Freddie26
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv,

я не особо сталкивался с механизмом обновления, но на сколько я понял обновлять клиентскую базу во время работы с ней пользователей не хорошо, это я назвал обновлением "на горячую" (опять же со слов сотрудников. не знаю хорошо это или плохо, но я перенимаю опыт у них и интернета если первые не в состоянии помочь). предположительно это создает повреждения базы, поэтому как было сказано выше надо подключаться в монопольном режиме
...
Рейтинг: 0 / 0
Rollback чужих транзакций
    #38504465
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv> в нормальных базах нет таких ФК. То есть,
kdv> в здравом уме каскадно записи никто не удаляет.

Фигасе заявление. Это у тебя такой здравый ум.
У других он другой и не менее здравый.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Rollback чужих транзакций
    #38504466
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще странная ситуация. У пользователей "ломается БД" и, возможно, корень этого в 1-3 причинах. И, вместо того, чтобы искать и исправлять причину, борются со следствием. Было бы неплохо пригласить как минимум одного из них сюда, для разъяснительных бесед. Поп-корн уже готов.
...
Рейтинг: 0 / 0
Rollback чужих транзакций
    #38504469
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустамkdv> в нормальных базах нет таких ФК. То есть,
kdv> в здравом уме каскадно записи никто не удаляет.

Фигасе заявление. Это у тебя такой здравый ум.
У других он другой и не менее здравый.
Да сколько уже спорили с Дмитрием на эту тему. Уперся, что это ненормально - и все.
...
Рейтинг: 0 / 0
Rollback чужих транзакций
    #38504473
Freddie26
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам,

после копирования в пустую базу если пытаться просто восстановить внешние ключи выкидывало ошибку о нарушении ссылочной целостности, поэтому я делаю выборку всех ключей которые ее нарушают и правлю их

написать утилиту которая будет делать бэкап не такая уж и большая проблема, но сейчас не до этого, потому что имеется несколько поврежденных баз, а заказчики требуют их работоспособности. по ремонту изначально назначили меня так как было решено что задача не приоритетная, а в последствии подключили моего куратора, а так как штат сотрудников не большой и больше никто не разбирается в ремонте БД, то пытаемся разобраться своими силами опираясь на опыт куратора. он мне дает задание сделать - я выполняю. после устранения неисправностей БД стоит задача написать утилиту которая делала бы бэкап по расписанию и собирала данные о базе.

прошу прощения за никому не понятные выражения, повторюсь: набрался у сотрудников
...
Рейтинг: 0 / 0
Rollback чужих транзакций
    #38504475
Freddie26
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CyberMax,

со следствием приходится бороться, потому что клиенты звонят в офис и мозг выносят починить базу.

с причиной к слову говоря тоже начинаем бороться. по крайней мере теперь будем выполнять обновления в монопольном режиме.
как остальные проблемы будут решаться не знаю
...
Рейтинг: 0 / 0
Rollback чужих транзакций
    #38504477
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Freddie26,

Список ошибок мы дождемся?
...
Рейтинг: 0 / 0
Rollback чужих транзакций
    #38504485
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax> Да сколько уже спорили

Я в курсе, тоже участвовал, IIRC. Это как раз то, о чём я говорил
в прошлый раз - нечто, в лучшем случае, спорное выдаётся как
абсолютная истина. А когда ему говоришь, что он ахинею несёт -
обижаться и возмущаться начинает.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Rollback чужих транзакций
    #38504488
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Freddie26> после копирования в пустую базу если пытаться
Freddie26> просто восстановить внешние ключи выкидывало
Freddie26> ошибку о нарушении ссылочной целостности ...

Я знаю и об этом не спрашивал. Объясняю ещё раз, для непонятливых:
есть данные, в т.ч. мастер-детали с внешними ключами, разумеется.
При "повреждении" БД (или по какой-то другой причине) при порче
или "пропаже" данных мастера вы удаляете и все его детали, а в общем
случае не только детали, а вообще все FK-ссылки. Если не удаляете, а
делаете Set Null, то это немногим лучше, ибо во-первых, поля могут не
допускать Null-ы, а во-вторых, оставшиеся данные люди в конкретных
системах (БД-клиентах) могут в итоге просто не увидеть (глазами).

Так что это ещё бабушка надвое сказала, исправляете ли вы БД или
просто "обрубаете". Мотор тоже можно "чинить" выкидыванием
"нерабочих" деталей, знаете ли.

> написать утилиту которая будет делать бэкап не такая уж и
> большая проблема, но сейчас не до этого <skipped>

Гм... Я понимаю, что у вас там организационный бардак, и Вы, судя
по всему, ничего не решаете, но "утилита которая будет делать бэкап"
может представлять из себя простой батник (есть готовые на форуме),
"писать" и внедрять её ВСЁ РАВНО НАДО и времени на это уйдёт
в ЛЮБОМ СЛУЧАЕ меньше, чем на разработку вашей непонятной
утилиты, которая якобы "чинит" базы.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Rollback чужих транзакций
    #38504552
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамЭто как раз то, о чём я говорил в прошлый раз - нечто, в лучшем случае, спорное выдаётся как
абсолютная истина. А когда ему говоришь, что он ахинею несёт - обижаться и возмущаться начинает.
ну почему же спорное? "в нормальных базах записи не удаляют" (с) местное. И вроде здесь же согласились, что каскадное удаление - зло. Я не отрицаю, что его где-то можно использовать, но это составляет единицы процента от всех ФК базы данных.
А вы мне начинаете, что "каскадное удаление можно использовать". Да все можно использовать, кто ж спорит...
...
Рейтинг: 0 / 0
Rollback чужих транзакций
    #38504648
Freddie26
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CyberMax,

прошу прощения за задержку. имеем такую ошибку при попытке открыть таблицу на относительно маленькой БД (на большей БД пока не имею возможности представить ошибки):

- при открытии с помощью приложения
Project Project2.exe raised exception class EIBNativeException with message '[AnyDAC][Phys][IB]internal Firebird consistency (wrong record length(183),file:vio.cpp line: 1159)'.

-при открытии в IBExpert
Error Message:
----------------------------------------
can't format message 13:98 -- message file C:\Windows\firebird.msg not found.
internal Firebird consistency check (wrong record length (183), file: vio.cpp line: 1159).
...
Рейтинг: 0 / 0
Rollback чужих транзакций
    #38504664
Freddie26
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов РустамТак что это ещё бабушка надвое сказала, исправляете ли вы БД или
просто "обрубаете". Мотор тоже можно "чинить" выкидыванием
"нерабочих" деталей, знаете ли.

понятно что мы выкидываем "нерабочие" детали, но стоит ли прилагать большие усилия и затраты для восстановления базы - решать не мне. начальство решило, что стоит попробовать вытаскивать максимум информации своими силами, к тому же клиенты зачастую не видят в повреждении БД своей вины и становится вопрос с чей стороны будет происходить оплата ремонта.
...
Рейтинг: 0 / 0
Rollback чужих транзакций
    #38504671
Freddie26
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv,

не подскажите как подключаться к БД в монопольном режиме программно?
...
Рейтинг: 0 / 0
Rollback чужих транзакций
    #38504681
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Freddie26,

Версия Firebird какая используется?
...
Рейтинг: 0 / 0
Rollback чужих транзакций
    #38504704
Freddie26
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CyberMax,

Verion 2.5.2.26540 Firebird 2.5
...
Рейтинг: 0 / 0
Rollback чужих транзакций
    #38504751
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Freddie26,

1. Подключаешься к базе. Смотришь в MON$ATTACHMENTS. Если есть кто, кроме себя - выгоняешь (как по телефону, так и через DELETE).
2. Шатдаун базы.
3. Profit!
...
Рейтинг: 0 / 0
Rollback чужих транзакций
    #38504816
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, CyberMax!
You wrote on 18 декабря 2013 г. 11:54:16:

CyberMax> 1. Подключаешься к базе. Смотришь в MON$ATTACHMENTS. Если есть кто,
> кроме себя - выгоняешь (как по телефону, так и через DELETE).
> 2. Шатдаун базы.
> 3. Profit!
сильно подозреваю, что у них там все мастеркеями ходят.

зы: проще расстрелять всех к чертовой бабушке...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 62, страница 2 из 3
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Rollback чужих транзакций
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]