powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Активировать индексы
25 сообщений из 37, страница 1 из 2
Активировать индексы
    #39982807
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прислали базу, в которой все индексы, кроме уникальных деактивированы.

Можно ли их как-то активировать обратно?

Пробовал:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
EXECUTE IBEBLOCK
AS
BEGIN
  FOR
    SELECT
      idx.rdb$index_name
    FROM
      rdb$indices idx
    WHERE
      idx.rdb$index_inactive = 1
    INTO
      :var_name
  DO BEGIN
    var_sql = 'ALTER INDEX ' || ibec_Trim(:var_name) || ' ACTIVE';
    EXECUTE STATEMENT :var_sql;
  END
END;


Сервер падает с ошибкой в логеinternal gds software consistency check (partner index description not found (175), file: idx.c line: 1410)
Код: sql
1.
2.
3.
4.
UPDATE rdb$indices idx SET
  idx.rdb$index_inactive = 0
WHERE
  idx.rdb$index_inactive = 1;

при коммите падение с той же ошибкой.

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

И второй вопрос: как такое могло произойти?

Сервер: InterBase 2017

С уважением, Vasilisk
...
Рейтинг: 0 / 0
Активировать индексы
    #39982810
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Можно ли их как-то активировать обратно?

У IBE есть специальная кнопочка для этого.

_Vasilisk_И второй вопрос: как такое могло произойти?

Восстановление либо не завершилось из-за ошибки, либо активация индексов была
принудительна отключена опциями gbak. В первом случае в базе много чего можно недосчитаться.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Активировать индексы
    #39982812
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
У IBE есть специальная кнопочка для этого.
Вижу только в таблице. Т.е. придется открывать каждую таблицу. И он не активирует индексы, которые начинаются с RDB$

Dimitry Sibiryakov
Восстановление либо не завершилось из-за ошибки, либо активация индексов была принудительна отключена опциями gbak.
Запускал с опциями
Код: powershell
1.
"c:\Program Files\Embarcadero\InterBase\bin\gbak.exe" -archive_recover -r -user SYSDBA -pas masterkey -va -y %log% "%gbk%" %ib%

процесс завершился, лог пустой
...
Рейтинг: 0 / 0
Активировать индексы
    #39982819
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
процесс завершился, лог пустой
исходная база с которой делался бекап скорее всего "поломатая".
если есть возможность, проверь её.
...
Рейтинг: 0 / 0
Активировать индексы
    #39982821
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
исходная база с которой делался бекап скорее всего "поломатая".
Валидацию сделать?

Допустим да, тогда что?
...
Рейтинг: 0 / 0
Активировать индексы
    #39982824
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
если есть возможность, проверь её.
Вспомнил. С большой вероятностью исходной базы нет. На днях делали бэкап/рестор и после рестора оригинальную базу скорее всего убили
...
Рейтинг: 0 / 0
Активировать индексы
    #39982829
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Сервер падает с ошибкой в логеinternal gds software consistency check (partner index description not found
Не знаю про IB, но в FB это говорит о том, что второй индекс в паре PK\UK <-> FK не активен или вообще удалён.

Поэтому утверждение
_Vasilisk_
все индексы, кроме уникальных деактивированы.
нужно бы проверить.

Чтобы это исправить, можно попробовать
- активировать все обычные индексы (не относящиеся к ограничениям PK\UK\FK) и закоммитить их,
- активировать оставшиеся PK\UK и закоммитить их,
- активировать FK по-одному с коммитом каждого - так найдётся тот FK, для которого нет пары

PS что в RDB$INDICES.RDB$INDEX_INACTIVE у неактивных индексов ?
...
Рейтинг: 0 / 0
Активировать индексы
    #39982835
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
процесс завершился, лог пустой
ресторить нужно с ключиком -v
...
Рейтинг: 0 / 0
Активировать индексы
    #39982846
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_И он не активирует индексы, которые начинаются с RDB$
а зачем ему это??? Что - индексы с RDB$ тоже неактивные?

про ошибку
(partner index description not found (175)
написано тут https://www.ibase.ru/errors/

че-то да, подозрительная база. Глянь gstat -h, если рестор был с обломом, она должна быть в shutdown.
...
Рейтинг: 0 / 0
Активировать индексы
    #39983061
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad
Поэтому утверждение
_Vasilisk_
все индексы, кроме уникальных деактивированы.
нужно бы проверить.
Да. Соврал. Часть primary key тоже неактивна. Но при их активации появляется ошибка о существовании дубликатов записей.

Сейчас над этим работаю
hvlad
PS что в RDB$INDICES.RDB$INDEX_INACTIVE у неактивных индексов ?
1
kdv
Глянь gstat -h,
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Database header page information:
        Flags                   0
        Checksum                12345
        Write timestamp         Jul 23, 2020 13:04:07
        Page size               4096
        ODS version             17.0
        Oldest transaction      873
        Oldest active           874
        Oldest snapshot         874
        Next transaction        875
        Sequence number         0
        Next attachment ID      0
        Implementation ID       16
        Shadow count            0
        Page buffers            32768
        Next header page        0
        Database dialect        3
        Creation date           Jul 22, 2020 17:34:06
        Backup timestamp        Jul 22, 2020 17:38:46
        Attributes

    Variable header data:
        Sweep interval:         20000
        *END*
kdv
если рестор был с обломом,
Я ее сам ресторил. Облома не видел
...
Рейтинг: 0 / 0
Активировать индексы
    #39983063
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

так, комменты не по делу: база 4 гиг, а page size у нее 4к (мало, надо 8к), да еще и кэш прописан в заголовке, причем 128мб (при том что ИБ только суперсервер).
...
Рейтинг: 0 / 0
Активировать индексы
    #39983069
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Я ее сам ресторил. Облома не видел
не может такого быть, потому что никогда.
запусти рестор с ключом -v.
концовку вывода выложи сюда.
...
Рейтинг: 0 / 0
Активировать индексы
    #39983103
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_> Но при их активации появляется ошибка о существовании дубликатов записей.

А клиент (хозяин БД) не сообщил никаких сведений о сценарии поломки?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Активировать индексы
    #39983142
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
А клиент (хозяин БД) не сообщил никаких сведений о сценарии поломки?
Нет. Исходная жалоба была: "Что-то все тормозит"
Мимопроходящий
запусти рестор с ключом -v.
концовку вывода выложи сюда.
Запуск
Код: powershell
1.
"c:\Program Files\Embarcadero\InterBase\bin\gbak.exe" -archive_recover -r -user SYSDBA -pas masterkey -v -va -y %log% "%gbk%" %ib%

выхлоп
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Thu Jul 23 14:51:47 2020: gbak: opened file d:\DB\Crash.GBK
Thu Jul 23 14:51:47 2020: gbak: transportable backup -- data in XDR format
Thu Jul 23 14:51:47 2020: gbak: 		backup file is compressed
Thu Jul 23 14:51:49 2020: gbak: created database localhost:d:\DB\Crash.GBK_test.ib, page_size 4096 bytes
Thu Jul 23 14:51:49 2020: gbak: started transaction
Thu Jul 23 14:51:49 2020: gbak: restoring domain DM_ACTIVITY
Thu Jul 23 14:51:49 2020: gbak: restoring domain DM_ADDRESS
.......................
Thu Jul 23 14:57:17 2020: gbak:     restoring privilege for user SYSDBA
Thu Jul 23 14:57:17 2020: gbak:     restoring privilege for user SYSDBA
Thu Jul 23 14:57:17 2020: gbak: restoring SQL role: ADMINISTRATOR
Thu Jul 23 14:57:18 2020: gbak: creating indexes
Thu Jul 23 14:57:19 2020: gbak: finishing, closing, and going home
...
Рейтинг: 0 / 0
Активировать индексы
    #39983147
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_, что за ключ -va?
...
Рейтинг: 0 / 0
Активировать индексы
    #39983149
Dayroon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,
-va[lidate] выполнять контроль данных (InterBase 7.x, 2007, 2009), по умолчанию контроль не выполняется
...
Рейтинг: 0 / 0
Активировать индексы
    #39983152
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Исходная жалоба была: "Что-то все тормозит"

Вангую: у них есть процедура периодического бэкап-рестора с заменой исходной БД. На одном
из циклов рестор обломался из-за дубликата в первичном ключе, отсюда начались тормоза и
дальнейшее заполнение дубликатами. Тебе прислали исправный бэкап уже битой базы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Активировать индексы
    #39983156
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Вангую: у них есть процедура периодического бэкап-рестора с заменой исходной БД.
Не угадал. Автоматический бэкап/рестор есть, но рестор в отдельную базу с валидацией восстановления. И если какие-то траблы, то идет уведомление админу
...
Рейтинг: 0 / 0
Активировать индексы
    #39983161
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dayroon
Мимопроходящий,
-va[lidate] выполнять контроль данных (InterBase 7.x, 2007, 2009), по умолчанию контроль не выполняется
чо-то гложут меня смутные сомненья...
а не наоборот ли?
...
Рейтинг: 0 / 0
Активировать индексы
    #39983169
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийа не наоборот ли?

Нет, именно так. Это же Interbase.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Активировать индексы
    #39983172
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
чо-то гложут меня смутные сомненья...
а не наоборот ли?
Именно так. "Фича" от интербейза для убыстрения рестора
...
Рейтинг: 0 / 0
Активировать индексы
    #39983184
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Мимопроходящий
чо-то гложут меня смутные сомненья...
а не наоборот ли?
Именно так. "Фича" от интербейза для убыстрения рестора
хрень какая-то.
посмотрел ихнюю доку: http://docwiki.embarcadero.com/images/InterBase/2020/e/3/30/OpGuide.pdf
описание отсутствует напрочь.
одна только странная фраза: "собака - друг человека".
Use to validate the database when restoring it.
и всё.
в чем эта "валидация" заключается, буй проссышь...
убери его нахер, база на выходе БИТАЯ.

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

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

1. Активируем все индексы, кроме внешних ключей
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
EXECUTE IBEBLOCK
AS
BEGIN
  FOR
    SELECT
      idx.rdb$index_name
    FROM
      rdb$indices idx
    WHERE
      idx.rdb$index_inactive = 1
      AND idx.rdb$foreign_key IS NULL
    INTO
      :var_name
  DO BEGIN
    var_sql = 'ALTER INDEX ' || ibec_Trim(:var_name) || ' ACTIVE';
    EXECUTE STATEMENT :var_sql;
  END
END;

COMMIT;


2. В тех местах, где возникают конфликты дубликатов вычищаем их (у меня было три группы дубликатов по две записи на одном ключе)

3. Активируем внешние ключи
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
EXECUTE IBEBLOCK
AS
BEGIN
  FOR
    SELECT
      idx.rdb$index_name
    FROM
      rdb$indices idx
    WHERE
      idx.rdb$index_inactive = 1
      AND idx.rdb$foreign_key IS NOT NULL
    INTO
      :var_name
  DO BEGIN
    var_sql = 'ALTER INDEX ' || ibec_Trim(:var_name) || ' ACTIVE';
    EXECUTE STATEMENT :var_sql;
  END
END;

COMMIT;

...
Рейтинг: 0 / 0
Активировать индексы
    #39983192
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
хрень какая-то.
http://www.ibase.ru/db_repair/#pdup
...
Рейтинг: 0 / 0
Активировать индексы
    #39983198
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Мимопроходящий
хрень какая-то.
http://www.ibase.ru/db_repair/#pdup
найопка!
плацебо!
...
Рейтинг: 0 / 0
25 сообщений из 37, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Активировать индексы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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