|
|
|
Rollback чужих транзакций
|
|||
|---|---|---|---|
|
#18+
давайте вернемся к исходному вопросу. Freddie26Всемирная паутина говорит о грубости работы -gfix и о куче минусов. Я честно говоря только на словах знаю про -gfix, понимаю что там большой функционал, но не разу ее не запускал. Однако те кто из сотрудников запускал говорят: "совместно придуманное нами решение лучше". Работает примерно по тому же принципу, но результат лучше и быстрее получается. Прошу ответить, хотя бы на часть - о какой "грубости работы gfix и куче минусов" говорит всемирная паутина? Ссылки, мнения. - в чем состоит "совместно придуманное нами решение"? Если не секрет. Если только речь не про мифическую "отмену транзакций". по крайней мере в ваших сообщениях я вижу ряд противоречий. С одной стороны, поврежденные БД у пользователей, с другой стороны, висячие коннекты, с третьей - падение сервера по отсутствию питания. Т.е. в кучу намешано всякого, а вот выводы непонятно какие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2013, 01:29:49 |
|
||
|
Rollback чужих транзакций
|
|||
|---|---|---|---|
|
#18+
kdv... по крайней мере в ваших сообщениях я вижу ряд противоречий. С одной стороны, поврежденные БД у пользователей, с другой стороны, висячие коннекты, с третьей - падение сервера по отсутствию питания... Ты знаешь, может быть все, что угодно. Я позавчера наблюдал за работой пользователя, в режиме "удаленного рабочего стола". Все говорит, хорошо, только "некоторая нестабильность". Так вот, мужик запустил клиентское приложение, тут же его "убил" с помощью диспетчера задач, снова запустил, снова убил - "подвисает". Потом пошел, "перезагрузил сервер". "Сервер" (там, где FireBird и база) - это ноут одного из сотрудников, который периодически впадает в спячку, когда хозяин им не пользуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2013, 02:20:02 |
|
||
|
Rollback чужих транзакций
|
|||
|---|---|---|---|
|
#18+
kgb ussr, да я представляю, что в таких местах происходит, но вот мне не очень ясно, что за выводы и на каком основании делают "старшие товарищи", которых мы тут, похоже, в глаза не видели. Самые проблемные разработчики - это те, которые ни с кем не общаются, и никогда нигде не спрашивают. Вот Freddie26 - исключение, и это хорошо, но неясно, кто там рядом наводит тень на плетень. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2013, 02:31:41 |
|
||
|
Rollback чужих транзакций
|
|||
|---|---|---|---|
|
#18+
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 ругается, то длина поля превышена) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2013, 02:36:57 |
|
||
|
Rollback чужих транзакций
|
|||
|---|---|---|---|
|
#18+
kgb ussrТак вот, мужик запустил клиентское приложение, тут же его "убил" с помощью диспетчера задач, снова запустил, снова убил - "подвисает". Потом пошел, "перезагрузил сервер". "Сервер" (там, где FireBird и база) - это ноут одного из сотрудников, который периодически впадает в спячку, когда хозяин им не пользуется. Я бы в пераую очередь не писал утилиту а: - настроил ноут что бы не засыпал - отрубил бы руки пользователю за "запустил, срубил". Причем отрубил бы сразу по самые уши ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2013, 02:48:19 |
|
||
|
Rollback чужих транзакций
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2013, 02:52:12 |
|
||
|
Rollback чужих транзакций
|
|||
|---|---|---|---|
|
#18+
Freddie26Меня не сильно интересовали вопросы как узнают у нас в офисе о повреждении БД, но по факту когда пытаешься сделать выборку из некоторых таблиц вылетает ошибка(то на Firebird ругается, то длина поля превышена) Рукалицо. Походу кто-то из разработчиков сделал скрипт, который меняет длину варчар-поля через правку системных таблиц, у пользователей вылезает сообщение FB об обрезке строки, и разработчики бросаются чинить базу через совершенно немыслимые телодвижения. Фредди, огромная просьба - выложи хотя-бы три разные "ошибки БД". Только не пересказ, а полный текст. Без этого непонятно, что там у вас за повреждения. Есть подозрение, что вырубание сервера и "поломка базы" - никак не связаны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2013, 03:10:06 |
|
||
|
Rollback чужих транзакций
|
|||
|---|---|---|---|
|
#18+
Freddie26> правим поля на которые в последствии будут восстанавливаться Freddie26> FK, а именно для FK у которых значение ON DELETE = CASCADE Freddie26> удаляем записи, для SET NULL устанавливаем значение поля в NULL. А почему вы уверены, что это правильно? Тем более, если делать это не вручную и от безвуходности, а автоматом? Freddie26> обновлении базы "на горячую" А что это такое? Может, Вы, наконец, начнёте не свои термины выдумывать, а либо общепринятые использовать? Или хотя бы более простыми словами описывать - длиннее, но понятнее. > Администратор одной из баз в частности не может сделать backup Так может не утилиту писать, а просто еженочный бэкап всем настроить? Или даже написать "утилиту", которая этот самый бэкап и будет делать. :) Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2013, 03:12:26 |
|
||
|
Rollback чужих транзакций
|
|||
|---|---|---|---|
|
#18+
kdv, я не особо сталкивался с механизмом обновления, но на сколько я понял обновлять клиентскую базу во время работы с ней пользователей не хорошо, это я назвал обновлением "на горячую" (опять же со слов сотрудников. не знаю хорошо это или плохо, но я перенимаю опыт у них и интернета если первые не в состоянии помочь). предположительно это создает повреждения базы, поэтому как было сказано выше надо подключаться в монопольном режиме ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2013, 03:12:42 |
|
||
|
Rollback чужих транзакций
|
|||
|---|---|---|---|
|
#18+
kdv> в нормальных базах нет таких ФК. То есть, kdv> в здравом уме каскадно записи никто не удаляет. Фигасе заявление. Это у тебя такой здравый ум. У других он другой и не менее здравый. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2013, 03:13:25 |
|
||
|
Rollback чужих транзакций
|
|||
|---|---|---|---|
|
#18+
Вообще странная ситуация. У пользователей "ломается БД" и, возможно, корень этого в 1-3 причинах. И, вместо того, чтобы искать и исправлять причину, борются со следствием. Было бы неплохо пригласить как минимум одного из них сюда, для разъяснительных бесед. Поп-корн уже готов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2013, 03:14:31 |
|
||
|
Rollback чужих транзакций
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустамkdv> в нормальных базах нет таких ФК. То есть, kdv> в здравом уме каскадно записи никто не удаляет. Фигасе заявление. Это у тебя такой здравый ум. У других он другой и не менее здравый. Да сколько уже спорили с Дмитрием на эту тему. Уперся, что это ненормально - и все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2013, 03:19:15 |
|
||
|
Rollback чужих транзакций
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам, после копирования в пустую базу если пытаться просто восстановить внешние ключи выкидывало ошибку о нарушении ссылочной целостности, поэтому я делаю выборку всех ключей которые ее нарушают и правлю их написать утилиту которая будет делать бэкап не такая уж и большая проблема, но сейчас не до этого, потому что имеется несколько поврежденных баз, а заказчики требуют их работоспособности. по ремонту изначально назначили меня так как было решено что задача не приоритетная, а в последствии подключили моего куратора, а так как штат сотрудников не большой и больше никто не разбирается в ремонте БД, то пытаемся разобраться своими силами опираясь на опыт куратора. он мне дает задание сделать - я выполняю. после устранения неисправностей БД стоит задача написать утилиту которая делала бы бэкап по расписанию и собирала данные о базе. прошу прощения за никому не понятные выражения, повторюсь: набрался у сотрудников ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2013, 03:25:21 |
|
||
|
Rollback чужих транзакций
|
|||
|---|---|---|---|
|
#18+
CyberMax, со следствием приходится бороться, потому что клиенты звонят в офис и мозг выносят починить базу. с причиной к слову говоря тоже начинаем бороться. по крайней мере теперь будем выполнять обновления в монопольном режиме. как остальные проблемы будут решаться не знаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2013, 03:33:31 |
|
||
|
Rollback чужих транзакций
|
|||
|---|---|---|---|
|
#18+
Freddie26, Список ошибок мы дождемся? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2013, 03:40:49 |
|
||
|
Rollback чужих транзакций
|
|||
|---|---|---|---|
|
#18+
CyberMax> Да сколько уже спорили Я в курсе, тоже участвовал, IIRC. Это как раз то, о чём я говорил в прошлый раз - нечто, в лучшем случае, спорное выдаётся как абсолютная истина. А когда ему говоришь, что он ахинею несёт - обижаться и возмущаться начинает. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2013, 04:16:49 |
|
||
|
Rollback чужих транзакций
|
|||
|---|---|---|---|
|
#18+
Freddie26> после копирования в пустую базу если пытаться Freddie26> просто восстановить внешние ключи выкидывало Freddie26> ошибку о нарушении ссылочной целостности ... Я знаю и об этом не спрашивал. Объясняю ещё раз, для непонятливых: есть данные, в т.ч. мастер-детали с внешними ключами, разумеется. При "повреждении" БД (или по какой-то другой причине) при порче или "пропаже" данных мастера вы удаляете и все его детали, а в общем случае не только детали, а вообще все FK-ссылки. Если не удаляете, а делаете Set Null, то это немногим лучше, ибо во-первых, поля могут не допускать Null-ы, а во-вторых, оставшиеся данные люди в конкретных системах (БД-клиентах) могут в итоге просто не увидеть (глазами). Так что это ещё бабушка надвое сказала, исправляете ли вы БД или просто "обрубаете". Мотор тоже можно "чинить" выкидыванием "нерабочих" деталей, знаете ли. > написать утилиту которая будет делать бэкап не такая уж и > большая проблема, но сейчас не до этого <skipped> Гм... Я понимаю, что у вас там организационный бардак, и Вы, судя по всему, ничего не решаете, но "утилита которая будет делать бэкап" может представлять из себя простой батник (есть готовые на форуме), "писать" и внедрять её ВСЁ РАВНО НАДО и времени на это уйдёт в ЛЮБОМ СЛУЧАЕ меньше, чем на разработку вашей непонятной утилиты, которая якобы "чинит" базы. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2013, 04:30:03 |
|
||
|
Rollback чужих транзакций
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамЭто как раз то, о чём я говорил в прошлый раз - нечто, в лучшем случае, спорное выдаётся как абсолютная истина. А когда ему говоришь, что он ахинею несёт - обижаться и возмущаться начинает. ну почему же спорное? "в нормальных базах записи не удаляют" (с) местное. И вроде здесь же согласились, что каскадное удаление - зло. Я не отрицаю, что его где-то можно использовать, но это составляет единицы процента от всех ФК базы данных. А вы мне начинаете, что "каскадное удаление можно использовать". Да все можно использовать, кто ж спорит... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2013, 09:04:44 |
|
||
|
Rollback чужих транзакций
|
|||
|---|---|---|---|
|
#18+
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). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2013, 10:28:14 |
|
||
|
Rollback чужих транзакций
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамТак что это ещё бабушка надвое сказала, исправляете ли вы БД или просто "обрубаете". Мотор тоже можно "чинить" выкидыванием "нерабочих" деталей, знаете ли. понятно что мы выкидываем "нерабочие" детали, но стоит ли прилагать большие усилия и затраты для восстановления базы - решать не мне. начальство решило, что стоит попробовать вытаскивать максимум информации своими силами, к тому же клиенты зачастую не видят в повреждении БД своей вины и становится вопрос с чей стороны будет происходить оплата ремонта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2013, 10:35:36 |
|
||
|
Rollback чужих транзакций
|
|||
|---|---|---|---|
|
#18+
kdv, не подскажите как подключаться к БД в монопольном режиме программно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2013, 10:37:57 |
|
||
|
Rollback чужих транзакций
|
|||
|---|---|---|---|
|
#18+
Freddie26, Версия Firebird какая используется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2013, 10:42:49 |
|
||
|
Rollback чужих транзакций
|
|||
|---|---|---|---|
|
#18+
CyberMax, Verion 2.5.2.26540 Firebird 2.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2013, 10:57:14 |
|
||
|
Rollback чужих транзакций
|
|||
|---|---|---|---|
|
#18+
Freddie26, 1. Подключаешься к базе. Смотришь в MON$ATTACHMENTS. Если есть кто, кроме себя - выгоняешь (как по телефону, так и через DELETE). 2. Шатдаун базы. 3. Profit! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2013, 11:30:17 |
|
||
|
Rollback чужих транзакций
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2013, 11:55:58 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38504460&tid=1564048]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
289ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 222ms |
| total: | 628ms |

| 0 / 0 |
