Ошибка при backup-e

Access Violation, некорректное выполнение запросов или вызовов API, ошибки утилит командной строки, в общем все, что вам мешает работать

Модераторы: kdv, dimitr

Дмитрий
Сообщения: 127
Зарегистрирован: 26 окт 2004, 11:05

Ошибка при backup-e

Сообщение Дмитрий » 23 ноя 2006, 10:27

Добрый день!
При попытке сделать backup возникает ошибка: "Message length error (encountered 468, expected 464) gds_$receive failed".
Что делать? Где искать?


IB 7.5.0.5, Windows Server 2003 Standard Edition

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 23 ноя 2006, 10:56

- сделать select count(*) из всех таблиц
- найти проблемную
- подумать, что в ней менялось недавно (метаданные)

Дмитрий
Сообщения: 127
Зарегистрирован: 26 окт 2004, 11:05

Сообщение Дмитрий » 23 ноя 2006, 14:33

Сделал. Все посчиталось. Не помогло. Правда сообщение об шибке теперь: "Arithmetic exception, numeric overflow or string truncation".
Чудеса...

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 23 ноя 2006, 14:48

точно поменял какой-то тип столбца на несовместимый с имеющимися данными. придется теперь записи перелопачивать и искать "дефектную".

Дмитрий
Сообщения: 127
Зарегистрирован: 26 окт 2004, 11:05

Сообщение Дмитрий » 23 ноя 2006, 14:52

А каким образом? Подскажите дураку :oops:

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 23 ноя 2006, 15:38

Ты даже не знаешь, что менялось? :shock:
Гм. Ну ладно. Давай попробуем.
Предположим, что в таблице есть уникальный ID.

Код: Выделить всё

select count(ID) from table1
выполнившись без ошибок, покажет нам, что ошибка не в этом столбце и можно на него опереться.
Предположим, эта таблица выглядит так:

Код: Выделить всё

AA (ID INTEGER, FLD1 INTEGER, FLD2 VARCHAR(10), ... )
Тогда будем искать все записи, где ошибка.

Код: Выделить всё

CREATE PROCEDURE AA_FIND_BUGS
RETURNS (ID INTEGER)
AS
declare variable fld1 integer;
declare variable fld2 varchar(10);
... /* Тут все остальные переменные под поля */
begin
  for select ID from AA into ID
  do begin
    select fld1, fld2, ...
      from AA
      where ID=:ID
      into fld1, fld2, ... ;
    when any do suspend;
  end
end
Процедура покажет список ID, в которых косяк. Берём первый попавшийся, смотрим, в каком поле косяк.
Вспоминаем, что меняли в этом поле.
Дальше можно, например, проапдейтить это поле в этих ID чем-нибудь приемлемым.

Дмитрий
Сообщения: 127
Зарегистрирован: 26 окт 2004, 11:05

Сообщение Дмитрий » 23 ноя 2006, 15:59

Совет хороший. Но есть одно НО: БД имеет размер 20 GB, в ней около 80-ти таблиц, полей в таблицах в среднем 35-40. Умру процедуры писать. :cry:

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 23 ноя 2006, 17:26

Дмитрий писал(а):Совет хороший. Но есть одно НО: БД имеет размер 20 GB, в ней около 80-ти таблиц, полей в таблицах в среднем 35-40. Умру процедуры писать. :cry:
О смерти надо было думать, когда метаданные правил.
Во-первых, у тебя во всех таблицах ошибки?
Во-вторых, перечислять поля вручную не обязательно, такие действия эксперт умеет более-менее автоматизировать.

Дмитрий
Сообщения: 127
Зарегистрирован: 26 окт 2004, 11:05

Сообщение Дмитрий » 24 ноя 2006, 09:56

Эпопея продолжается. Запускал backup несколько раз подряд. Каждый раз вылетает на разных таблицах. Думаю, что дело не в кривых данных. Что делать дальше? Как найти ошибку?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 24 ноя 2006, 10:46

Каждый раз вылетает на разных таблицах.
обычно это бывает когда память (RAM) дохлая.

Дмитрий
Сообщения: 127
Зарегистрирован: 26 окт 2004, 11:05

Сообщение Дмитрий » 24 ноя 2006, 11:18

kdv писал(а):
Каждый раз вылетает на разных таблицах.
обычно это бывает когда память (RAM) дохлая.
Похоже на правду. В последнем логе gbak сказал: "ERROR: System memory exhausted". Странно, сервак новый, месяца два работает.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 24 ноя 2006, 11:29

Дмитрий писал(а):Странно, сервак новый, месяца два работает.
Память - это такая штука, которая в конкретном железе глючит с самого начала, либо если работает, то переживёт этот сервер. Нечему там ломаться. Ну, если только не перегреть.

Дмитрий
Сообщения: 127
Зарегистрирован: 26 окт 2004, 11:05

Сообщение Дмитрий » 24 ноя 2006, 12:18

WildSery писал(а):
Дмитрий писал(а):Странно, сервак новый, месяца два работает.
Память - это такая штука, которая в конкретном железе глючит с самого начала, либо если работает, то переживёт этот сервер. Нечему там ломаться. Ну, если только не перегреть.
Так раньше все нормально было. Может из-за увеличения размера базы gbak при работе лезет в какие-то области памяти, в которых ошибка?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 24 ноя 2006, 12:30

ё-мое, вы не можете остановить сервер, и запустить какой-нибудь приличный тест памяти в DOS?

Пример. Знакомый купил новый комп по запчастям, и взял две планки памяти по 1 гиг. Пытался установить операционку - все время глючит. Менял память так и сяк - не помогает. Запустил микрософтовский memdiag - память битая напрочь. Снес обратно в магазин - поменяли без вопросов. Причем ОБЕ планки были дохлые.

Дмитрий
Сообщения: 127
Зарегистрирован: 26 окт 2004, 11:05

Сообщение Дмитрий » 24 ноя 2006, 14:18

Память протестировал. Все ОК. Чего делать-то?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 24 ноя 2006, 17:03

Память протестировал. Все ОК. Чего делать-то?
чем тестировал и сколько длился тест. обычно подобные тесты ставят в жестком и длительном режиме, например на ночь.
IB 7.5.0.5
кстати, я поначалу не обратил внимания. Или ты ошибся, или пользуешься каким-то филд-тестом. Такой версии вообще не было. см.
www.ibase.ru/devinfo/allversions.htm

Дмитрий
Сообщения: 127
Зарегистрирован: 26 окт 2004, 11:05

Сообщение Дмитрий » 27 ноя 2006, 09:56

чем тестировал и сколько длился тест. обычно подобные тесты ставят в жестком и длительном режиме, например на ночь.
Использовал Microsoft Memory Diagnostic. Гонял где-то час.

Версия IB 7.5.0.174

На выходные поставил перекачивать базу. Т.е. создал новую и перекачал все данные. Все перекачалось без проблем. Ошибок нет. Сегодня проверю, сделается ли backup. Вот если не сделается, то тогда точно память. Кстати, а чем еще можно память протестировать?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 27 ноя 2006, 11:04

7.5.0 - глюкало. рекомендую обновить до 7.5.1 или 7.5.1 sp1.
http://ibase.ru/ibinstall/ib751sp1_readme.htm

кстати, насчет разных и постоянных ошибок при бэкапе. надеюсь, бэкап делается gbak -b -g -v ..., а не из IBExpert ?
Кстати, а чем еще можно память протестировать?
http://www.memtest86.com/

Дмитрий
Сообщения: 127
Зарегистрирован: 26 окт 2004, 11:05

Сообщение Дмитрий » 27 ноя 2006, 11:35

7.5.0 - глюкало. рекомендую обновить до 7.5.1 или 7.5.1 sp1
Уже качаю, обновлю.
кстати, насчет разных и постоянных ошибок при бэкапе. надеюсь, бэкап делается gbak -b -g -v ..., а не из IBExpert ?
Делал из IBConsolr. Из командной строки говорит "Unavailable database". Кажется, что-то с настройками безопасности.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 27 ноя 2006, 13:23

Из командной строки говорит "Unavailable database". Кажется, что-то с настройками безопасности.
#%@$#@ !!! Читайте FAQ!
http://www.ibase.ru/ibfaq.htm#unavail

Ответить