|
Испорченная БД
|
|||
---|---|---|---|
#18+
Привет всем. FB WI-V6.3.5.26952 CS При подключении к БД из isql происходит следующее: Код: powershell 1. 2. 3. 4.
Без указания хоста: Код: powershell 1. 2. 3.
Запускаю gfix: Код: powershell 1. 2.
Если в IBExpert загрузить файл БД через Tools/Database Inside, то появляется вкладка Errors, на которой в гриде одна строка, у которой Message: Код: powershell 1.
Что именно произошло с БД, точно сказать не могу. Вроде бы при активных подключениях в несколько таблиц было добавлено целочисленное поле, которое сразу же апдейтилось в 0. Под активными подключениями понимается около 5-7 коннектов, которые массово апдейтят таблицы, в которые добавлялось поле. Размер БД 11 гигов. Более точной информации нету. Эту БД можно вылечить каким-либо штатным способом? P.S. Данные из БД не нужны - был восстановлен бэкап. С уважением, Polesov. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2016, 11:22 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
PolesovПри подключении к БД из isql происходит следующее: Что в firebird.log? PolesovЭту БД можно вылечить каким-либо штатным способом? Скорее всего - нет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2016, 13:18 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovЧто в firebird.log? Увы, с момента порчи БД сервер (в смысле, железяка) был переустановлен. Логов нет. PolesovЭту БД можно вылечить каким-либо штатным способом? Dimitry SibiryakovСкорее всего - нет. Кстати, забыл упомянуть - в окне Database Inside IBExpert-а список таблиц на вкладке Extract Data\Metadata пуст. Судя по Код: powershell 1.
безнадежно запорчена системная таблица RDB$FORMATS Ну, а вообще такую БД вылечить как-либо можно? С уважением, Polesov. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2016, 13:33 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovЧто в firebird.log? Если вопрос был про содержимое лога на момент попытки подключения к битой БД: Код: powershell 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
С уважением, Polesov. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2016, 13:39 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
PolesovКстати, забыл упомянуть - в окне Database Inside IBExpert-а список таблиц на вкладке Extract Data\Metadata пуст. Если невозможно прочитать RDB$FORMATS, смысла ковырять все остальное просто нет. А базу можно поиметь? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2016, 13:46 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
PolesovНу, а вообще такую БД вылечить как-либо можно? Теоретически - да. Воссоздать недостающий формат не так уж и сложно. Я думаю, ребята из IBSurgeon справятся. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2016, 13:48 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
Polesov, сервер просто падает, что в логе и показано а размер файла какой. такое ощущение, что не "безнадежно запорчена системная таблица RDB$FORMATS" а вообще весь заголовок убит перехлёстом через 4 гб какой конкретно сервер ib/fb стоял на старом серере ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2016, 13:53 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
IBExpertА базу можно поиметь? Думаю, что руководство не одобрит. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2016, 15:23 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
Ariochа размер файла какой. какой конкретно сервер ib/fb стоял на старом серере БД - 11 гигов, FB WI-V6.3.5.26952 CS ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2016, 15:25 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
Ariochсм. про размер файла БД Думаю, это не тот случай ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2016, 15:28 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
Classic Server... кто-нибудь дуриком подсоеднилися старой версией Классика или embedded... или расширение GDB вообще коненчо хрен теперь разберешься ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2016, 16:09 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
PolesovВроде бы при активных подключениях в несколько таблиц было добавлено целочисленное поле, которое сразу же апдейтилось в 0. Под активными подключениями понимается около 5-7 коннектов, которые массово апдейтят таблицы, в которые добавлялось поле. ой блин, у вас же классик...... PolesovFB WI-V6.3.5.26952 CS ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2016, 16:11 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
Polesov, при таких конкретных подозрениях на сценарий воспроизведения, я думаю все были бы вам благодарны, если бы вы смогли или хотя бы постарались воспроизвести эту поломку. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2016, 16:55 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
Ariochкто-нибудь дуриком подсоеднилися старой версией Классика или embedded... Ну, что было (или были) подключения через FBClient предыдущей версии от FB 2.5.4 ненулевая вероятность имеется. Подключение через Embedded гарантированно не возможно - его просто нет. Произошло все это где-то во второй половине декабря прошлого года. Человек, который мог бы рассказать, как все было, тут уже не работает. Сервер был переустановлен с нуля. Осталась только битая база. Как-то так. С уважением, Polesov. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2016, 17:09 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
Polesovчерез FBClient предыдущей версии ничего, дело не в клиенте, а в сервере: клиент к файлу БД доступа не имеет судя по всему вы просто нарвались на изменение метаданных на работающей БД это крайне не рекомендуется на SuperServer и в принципе запрещено на Classic'ах а у вас, вы выше, написали "CS" ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2016, 17:14 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
Roman SimakovPolesov, при таких конкретных подозрениях на сценарий воспроизведения, я думаю все были бы вам благодарны, если бы вы смогли или хотя бы постарались воспроизвести эту поломку. Ну, сценарий не замысловат - имеется 5-7 коннектов, которые массово апдейтят, ну скажем 5 таблиц. В это время в эти таблицы добавляется целочисленное поле not null. После добавления поле в рамках, скажем так DDL-ного коннекта, апдейтится в 0. В какой-то момент новый коннект к БД не возможен. Думаю, подобный сценарий можно легко воспроизвести - вопрос, сломается ли при этом БД? Кстати, тут же на форуме нашел идентичный случай http://www.sql.ru/forum/1167594/kakov-mehanizm-porchi-bazy?hl=ques С уважением, Polesov. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2016, 17:17 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
PolesovДумаю, подобный сценарий можно легко воспроизвести - вопрос, сломается ли при этом БД? Делать создание/изменение таблицы и добавление/изменение данных в ней в одной транзакции - известный и надёжный способ сломать БД. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2016, 19:35 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovсоздание/изменение таблицы и добавление/изменение данных в ней в одной транзакции Ну, в данном случае транзакции были все же разные. Понятно, что применять DDL при наличии активных коннектов не есть хорошо... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2016, 19:54 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
Polesovв данном случае транзакции были все же разные. Уверен? И несколько изменений одной таблицы в одной транзакции тоже не было? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2016, 20:22 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovнесколько изменений одной таблицы в одной транзакции тоже не было? Что подразумевается под "изменений одной таблицы в одной транзакции"? Если транзакция на массовый апдейт таблицы, в течение активности которой был применен DDL, то вполне возможно. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 09:53 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovДелать создание/изменение таблицы и добавление/изменение данных в ней в одной транзакции - известный и надёжный способ сломать БД. попробуй создать таблицу и залить в нее данные в той же транзакции. О результатах доложи. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 09:58 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
Polesov, несколько последовательных DDL например добавить столбец, а потом добавить еще один столбец computed by по предыдущему хотя на мое imho достаточно "классика" с изменением метаданных на лету ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 12:02 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
dimitrпопробуй создать таблицу и залить в нее данные в той же транзакции. О результатах доложи. На выходных попробую, доложу. В данном случае, на сколько удалось выяснить, сценарий был таков: - массовые апдейты производились из некой клиентской программы (обычная 2-звенка, FIBplus, длинная читающая транзакция и пишущая транзакция на апдейт); - из IBE в уже существующую таблицу сотрудник добавляет целочисленное поле not null; - сразу же после добавления в SQLEditor-е выполняется что-то типа Код: plsql 1. 2.
Создания таблицы и заливки в нее данных в той же транзакции не было. С уважением, Polesov. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 12:27 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
Polesov- из IBE в уже существующую таблицу сотрудник добавляет целочисленное поле not null; - сразу же после добавления в SQLEditor-е выполняется что-то типа прекрасно. т.е. столбец добавляется неизвестно каким способом (я надеюсь, что ИБЕ тут использует alter table), и кроме того, добавление столбца и update выполняются в разных транзакциях ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 12:37 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
Polesov, это не должно приводить к разрушению БД. И ещё есть более правильный путь Код: sql 1. 2.
который ещё и работает быстрее. P.S. В трёшке если таблица содержит данные, то FB не даст тебе добавить NOT NULL столбец без указания кляузы DEFAULT ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 12:37 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
dimitrО результатах доложи. Не стал ждать выходных. Код: powershell 1. 2. 3. 4. 5. 6. 7. 8. 9.
В общем-то, все ожидаемо, но БД не повредилась. Все же, это несколько другой случай. IMHO. С уважением, Polesov. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 12:50 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
PolesovНе стал ждать выходных. предложено было не тебе, а Сибирякову PolesovВсе же, это несколько другой случай. IMHO именно ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 12:53 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
kdvдобавление столбца и update выполняются в разных транзакциях В принципе, я об этом же и говорил. Симонов Денисэто не должно приводить к разрушению БД По идее да, но все же имеются прецеденты... Речь идет не о том, как при активных коннектах применять к БД DDL, а можно ли выяснить причину падения БД и исправить ошибку в исходном коде сервера. Все же на выходных попробую воспроизвести сценарий порчи БД. С уважением, Polesov. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 12:58 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
dimitrпопробуй создать таблицу и залить в нее данные в той же транзакции. О результатах доложи. Я знаю, что с этого направления вы уже давно поставили заборчик из костылей, но у ТСа-то не CREATE TABLE, а ALTER TABLE ADD COLUMN. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 13:18 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovЯ знаю, что с этого направления вы уже давно поставили заборчик из костылей, но у ТСа-то не CREATE TABLE, а ALTER TABLE ADD COLUMN. 1) его поставили в борланде, насколько я помню 2) ну и нефиг тогда было писать про "создание" таблицы ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 13:20 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
dimitrнефиг тогда было писать про "создание" таблицы Кстати, с alter table все то же самое: Код: powershell 1. 2. 3. 4. 5. 6. 7. 8. 9.
С уважением, Polesov. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 13:24 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
Polesov, ну так невозможно проапдейтить ещё не существующий столбец, а вот любой другой легко (DML не видит результаты DDL ещё незавершённой транзакции). И вообще все DDL выполняются только по коммиту. Я же вроде правильный путь показал. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 13:30 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
dimitr1) его поставили в борланде, насколько я помню 1) Я отлично помню, что Firebird 1 и даже, возможно, 1.5, этого заборчика не имели. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 13:40 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
Симонов ДенисDML не видит результаты DDL ещё незавершённой транзакции Более того, в другом коннекте не видит даже после commit в DDL-соединении - только после переподключения. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 13:48 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
Polesovв другом коннекте не видит даже после commit в DDL-соединении - только после переподключения. Потому что Classic ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2016, 13:54 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
[quot Симонов Денис]Polesov, это не должно приводить к разрушению БД. И ещё есть более правильный путь Код: sql 1. 2.
который ещё и работает быстрее. Если я правильно помню то default срабатывает при вставке записи. Если добавить такой командой поле в таблицу где уже есть записи то в имеющихся записях будет NULL несмотря на default. Надо делать update. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2016, 05:26 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
fraks, ты бы проверил что ли. Конечно если добавить DEFAULT к ранее созданному полю NULL значения останутся на своих местах. А вот для нового NOT NULL с DEFAULT поля для всех существующих ранее записей в этом поле будет значение по умолчанию. Причём этот оператор отработает очень быстро, потому что он на самом деле не делает UPDATE, а лишь создаёт новый формат к которому будут приведены существующие записи при выборке. Это как раз я проверял. Думаешь зря в тройке запретили добавление NOT NULL полей в таблицу с данными без предложения DEFAULT? Одно это изменение + запрет на модификацию системных таблиц убирают 50% причин возникновения так называемых "невосстановимых" бэкапов. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2016, 08:43 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
Симонов Денис> в тройке запретили добавление NOT NULL полей Симонов Денис> в таблицу с данными без предложения DEFAULT? Серьёзно? Какой ужас. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2016, 08:57 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, а зачем оно нужно? Чтобы битые базы создавать? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2016, 08:58 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, допустим DEFAULT нам не нужен. Тогда мы можем сделать вот так. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
по крайней мере после выполнения каждого оператора БД остаётся в консистентном состоянии. Последний оператор не меняет номер формата. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2016, 09:15 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
Симонов Денисfraks, ты бы проверил что ли. Конечно если добавить DEFAULT к ранее созданному полю NULL значения останутся на своих местах. А вот для нового NOT NULL с DEFAULT поля для всех существующих ранее записей в этом поле будет значение по умолчанию. Причём этот оператор отработает очень быстро, потому что он на самом деле не делает UPDATE, а лишь создаёт новый формат к которому будут приведены существующие записи при выборке. Это как раз я проверял. Проверил. Действительно, на FB 2.5 это работает. Возможно раньше это было не так (работаю с FB начиная с IB 4.2.1) и потом поправлено, а может был комплект граблей которые я неправильно опознал. Симонов ДенисДумаешь зря в тройке запретили добавление NOT NULL полей в таблицу с данными без предложения DEFAULT? Одно это изменение + запрет на модификацию системных таблиц убирают 50% причин возникновения так называемых "невосстановимых" бэкапов. Буквально на днях прошелся по сходным граблям. В таблицу добавил поле INTEGER DEFAULT -1 NOT NULL и при помощи UPDATE заполнил существующие записи. Косяк в том что делал это при наличи работающих коннектов. В итоге к вечеру в таблице таки были записи где это поле было с NULL и бэкап не ресторился. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2016, 09:44 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
Симонов Денис> Тогда мы можем сделать вот так. Понятно, что сделать можно по-всякому. Но заставлять писать 2 оператора вместо одного без необходимости - маразм. И на это будут справедливо пенять. P.S. Интересно, при создании таблицы (а не добавлении поля) тоже такое же ограничение имеется? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2016, 10:09 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
fraksБуквально на днях прошелся по сходным граблям. В таблицу добавил поле INTEGER DEFAULT -1 NOT NULL и при помощи UPDATE заполнил существующие записи. Косяк в том что делал это при наличи работающих коннектов. В итоге к вечеру в таблице таки были записи где это поле было с NULL и бэкап не ресторился. Так точно. На днях так же добавили поле not null с дефолтным значением в домене. Вечером бэкап не восстановился из-за трех строк с NULL. Делали ли полный апдейт всех строк этой таблицы на дефолтное значение - не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2016, 10:11 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамP.S. Интересно, при создании таблицы (а не добавлении поля) тоже такое же ограничение имеется? нет конечно. Мало того если таблица пустая то добавить NOT NULL поле можно. Такое же поведение и в Оракле хз с какой версии. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2016, 10:15 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
fraks, работающие коннекты это совсем из другой оперы, там багов ещё вагон и маленькая тележка и не только с NOT NULL. По крайней мере при использовании такого оператора в моноконнекте нельзя получить битую БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2016, 10:18 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
Симонов Денис> нет конечно Ну хоть так. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2016, 10:21 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
PolesovВсе же на выходных попробую воспроизвести сценарий порчи БД. В пустой БД была создана таблица: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.
Закачано 10 млн записей. Далее 10 копий программы-имитатора производили в случайных диапазонах апдейты. Из ISQL добавлялось поле интежер нот нулл. Далее после соммита добавленое поле апдейтилось в 0. Апдейт постоянно натыкался на дидлок. Был опробован другой сценарий: 10 копий программы-имитатора коннектились к БД, но ничего не апдейтили. После добавления из ISQL поля и его апдейта в 0 запускались апдейты в программах-имитаторах. В-общем, сломать БД не получилось. С уважением, Polesov. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2016, 13:15 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
Polesov, классик или суперсервер ? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2016, 14:50 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
AriochPolesov, классик или суперсервер ? Классик. Испорченная БД тоже эксплуатировалась на CS. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2016, 17:16 |
|
Испорченная БД
|
|||
---|---|---|---|
#18+
Возьмите FirstAID ( www.ib-aid.com ) и посмотрите данные в Extractor. Если будет сразу подсвечивать таблицы красным на предмет поломанных форматов, воспользуйтесь функцией External Metadata для подгрузки форматов из старой или аналогичной копии. С уважением, Алексей Ковязин Ibase.ru/IBSurgeon.com ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2016, 23:10 |
|
|
start [/forum/search_topic.php?author=ie12345&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
77ms |
get tp. blocked users: |
2ms |
others: | 687ms |
total: | 879ms |
0 / 0 |