Отключение индексов и разрушение целостности

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

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

Ответить
ganka
Сообщения: 6
Зарегистрирован: 19 июн 2005, 17:06

Отключение индексов и разрушение целостности

Сообщение ganka » 19 июн 2005, 18:19

Проблема - при работе с базой иногда обнаруживается, что некоторые индексы отключены (неактивны). Это приводит к разрушению ссылочной целостности. Сервер FB 1.5. В программах, работающих с базой нигде нет явного выключения индексов. После разрушения
их включить уже невозможно. Раз в 10 дней проводится backup\restore. Баз несколько сотен у пользователей, проблема у
разработчиков не воспроизводится. Какие действия могут приводить к такому эффекту?

Спасибо.

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Сообщение hvlad » 19 июн 2005, 19:08

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

ganka
Сообщения: 6
Зарегистрирован: 19 июн 2005, 17:06

Сообщение ganka » 19 июн 2005, 19:48

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

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Сообщение hvlad » 20 июн 2005, 00:17

1. Как вы определяете, что индексы неактивны ?
2. Опции рестора ?
3. Ошибки в логе сервера
4. Что говорит gfix -v -f ?

Лысый
Сообщения: 177
Зарегистрирован: 08 ноя 2004, 08:20

Сообщение Лысый » 20 июн 2005, 08:47

ну и еще:
5. Работаете ли из программы с метаданными?
6. Производите ли массовую заливку данных?

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 20 июн 2005, 12:52

Потребовать от админов проблемных серверов лог рестора. Скорее всего он не проходит до конца и завершается с сообщением об ошибке при построении индексов. Причины могут быть разные - от повреждённой исходной базы до тривиальной нехватки места в tmp при ресторе.

ganka
Сообщения: 6
Зарегистрирован: 19 июн 2005, 17:06

Сообщение ganka » 20 июн 2005, 13:43

1. Как вы определяете, что индексы неактивны ?
Поле RDB$INDEX_INACTIVE в таблице RDB$INDICES =1

2. Опции рестора ?
Рестор делается с помощью Борландовского компонента
TIBRestoreService
DeactivateIndexes False
NoShadow False
NoValidityCheck True
OneRelationAtATime False
Replace False
CreateNew True
UseAllSpace True


3. Ошибки в логе сервера
Рад бы, но мне приходят от пользователей только проблемные базы
из других городов, у меня это не воспроизводится. Занимался долго.

4. Что говорит gfix -v -f ?

Summary of validation errors


Number of record level errors : 1


5. Работаете ли из программы с метаданными?

Структура при работе не модифицируется. Если я правильно понял.

6. Производите ли массовую заливку данных?

Если 200-300 записей одновременно, это массовая, то да.


Вряд ли и нас в 100 местах одиноково повреждена исходная база.

Насчет нехватки места - 100% нет. Наши программы проверяют
наличие места при запуске.

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Сообщение hvlad » 20 июн 2005, 18:09

ganka писал(а):1. Как вы определяете, что индексы неактивны ?
Поле RDB$INDEX_INACTIVE в таблице RDB$INDICES =1
Всегда один и тот же индекс или разные ?
ganka писал(а):2. Опции рестора ?
Рестор делается с помощью Борландовского компонента
TIBRestoreService
DeactivateIndexes False
NoShadow False
NoValidityCheck True
OneRelationAtATime False
Replace False
CreateNew True
UseAllSpace True
UseAllSpace - не нужно, NoValidityCheck - возможно это вам и гадит.
Логи ресторов ведёте ?
ganka писал(а):3. Ошибки в логе сервера
Рад бы, но мне приходят от пользователей только проблемные базы
из других городов, у меня это не воспроизводится. Занимался долго.
Требуй с базами логи
ganka писал(а):4. Что говорит gfix -v -f ?

Summary of validation errors


Number of record level errors : 1
Ну, gfix сделать значит можем, а лог найти (в который gfix написал ошибки) - нет ? Несерьёзно это
ganka писал(а):5. Работаете ли из программы с метаданными?

Структура при работе не модифицируется. Если я правильно понял.
Это гуд
ganka писал(а):6. Производите ли массовую заливку данных?

Если 200-300 записей одновременно, это массовая, то да.
Нет, это не массовая, не боись ;)

ganka писал(а): Вряд ли и нас в 100 местах одиноково повреждена исходная база.

Насчет нехватки места - 100% нет. Наши программы проверяют
наличие места при запуске.
Т.е. 100% нет места ? :lol:
Проверка места при запуске, как и в любой другой момент - как мёртвому припарки. Только даёт ложное чувство защищённости.

В общем - давай лог сервера с проблемной БД и делай рестор правильно

ganka
Сообщения: 6
Зарегистрирован: 19 июн 2005, 17:06

Сообщение ganka » 20 июн 2005, 18:40

>Всегда один и тот же индекс или разные ?

Разные.

>UseAllSpace - не нужно, NoValidityCheck - возможно это вам и гадит.

Отключу.

>Логи ресторов ведёте ?

Да, чисто.

>Требуй с базами логи.

Потребую, но время от требования до получения на работающем предприятии такое, что ничего не приходит. Что в них искать?


>Ну, gfix сделать значит можем, а лог найти (в который gfix написал >ошибки) - нет ? Несерьёзно это

gfix сделал по сбойной базе, а ее прислали с предприятия, после того как там неделю проработали с чудесами.


>Проверка места при запуске, как и в любой другой момент - как >мёртвому припарки. Только даёт ложное чувство защищённости.

А что дает? Если на 300 Мб базе 10 Гб места это что мало?

>В общем - давай лог сервера с проблемной БД и делай рестор >правильно.

Будет лог - продолжим.

Спасибо.

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Сообщение hvlad » 20 июн 2005, 21:43

ganka писал(а):>Всегда один и тот же индекс или разные ?

Разные.
Чудеса
ganka писал(а):>Логи ресторов ведёте ?

Да, чисто.
А откуда вы это знаете ?
ganka писал(а):>Требуй с базами логи.

Потребую, но время от требования до получения на работающем предприятии такое, что ничего не приходит. Что в них искать?
Ошибки, кроме сетевых.
ganka писал(а):>Ну, gfix сделать значит можем, а лог найти (в который gfix написал >ошибки) - нет ? Несерьёзно это

gfix сделал по сбойной базе, а ее прислали с предприятия, после того как там неделю проработали с чудесами.
Ну и скажи мне - что написал в лог gfix который ты сам выполнял ?
ganka писал(а):>Проверка места при запуске, как и в любой другой момент - как >мёртвому припарки. Только даёт ложное чувство защищённости.

А что дает? Если на 300 Мб базе 10 Гб места это что мало?
А если я сразу после запуска твоей программы залью туда 10 гиг фильмов - то что ?
ganka писал(а): >В общем - давай лог сервера с проблемной БД и делай рестор >правильно.

Будет лог - продолжим.
Просто требуйте сразу с битой базой слать логи
ganka писал(а):Спасибо.
Обращайся :wink:

Ответить