Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: Активировать индексы  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 29015
Мимопроходящий,

ib xe7

gbak -?
-VA(LIDATE) validate data

причем, когда я писал в статью, проверял, и правда -va ВКЛЮЧАЛО валидацию, без нее ничего не валидировалось.
Надо будет перепроверить.

_Vasilisk_
gbak.exe" -archive_recover

што??? Это восстановление базы из "архива", который делается через -archive_database, причем это ДАМП, а не "бэкап".
Почему оно не ругается на комбинацию -archive_recover -r - я не знаю. Но по смыслу это перпендикулярные опции.

Ну и вообще, я уже неоднократно говорил про -r. Это путь в обрыв. Привыкнешь тестовые базы так ресторить, и в очередной раз убьешь нормальную.
23 июл 20, 15:52    [22172484]     Ответить | Цитировать Сообщить модератору
 Re: Активировать индексы  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 29015
_Vasilisk_,

ну проверил бы без -va. Это как сделали в ИБ 7, так я и написал. Может обратно переделали, хотя справка по гбак у ИБ хе7 утверждает что -va это именно включение проверки.
23 июл 20, 15:54    [22172485]     Ответить | Цитировать Сообщить модератору
 Re: Активировать индексы  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 31305
жаль конечно что у тебя исходной базы нет.
а то может оказаться что оно и в исходной было INACTIVE.
и gbak это состояние честно забекапил.
х.з. чо там IB позволяет в этом плане.
тут "чистый экскремент" нужен! (С)
23 июл 20, 15:54    [22172487]     Ответить | Цитировать Сообщить модератору
 Re: Активировать индексы  [new]
hvlad
Member

Откуда:
Сообщений: 10993
Мимопроходящий
жаль конечно что у тебя исходной базы нет.
а то может оказаться что оно и в исходной было INACTIVE.
и gbak это состояние честно забекапил.
Именно так оно и было - 146%.
23 июл 20, 16:27    [22172524]     Ответить | Цитировать Сообщить модератору
 Re: Активировать индексы  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11971
Мимопроходящий
а то может оказаться что оно и в исходной было INACTIVE.
А откуда оно могло появиться?
23 июл 20, 16:43    [22172535]     Ответить | Цитировать Сообщить модератору
 Re: Активировать индексы  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 31305
_Vasilisk_
Мимопроходящий
а то может оказаться что оно и в исходной было INACTIVE.
А откуда оно могло появиться?
по пыльному следу курсора на мониторе очень сложно будет выяснить
23 июл 20, 16:52    [22172544]     Ответить | Цитировать Сообщить модератору
 Re: Активировать индексы  [new]
hvlad
Member

Откуда:
Сообщений: 10993
_Vasilisk_
Мимопроходящий
а то может оказаться что оно и в исходной было INACTIVE.
А откуда оно могло появиться?
Из-за дубликатов в PK предыдущий рестор обломался и индексы не активировались.
Или предыдущий рестор был с деактивированными индексами - по той же причине.
23 июл 20, 17:21    [22172565]     Ответить | Цитировать Сообщить модератору
 Re: Активировать индексы  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 29015
_Vasilisk_
А откуда оно могло появиться?

у обычных индексов - кто-то взял и выключил.
у pk-fk-unique - маловероятно, разве что через системные таблицы (и то там волшебное значение 3 надо указывать для деактивации)

Ты вот спрашиваешь, и х.з. что тебе отвечать. Потому что, например, при ресторе все индексы создаются в конце рестора.
У ИБ видимо осталось (было и в ФБ, но в 2.1 уже нет), что если хоть какой-то индекс активировать обломилось, то дальше все остальные индексы тоже остаются неактивными. И тут всё зависит только от порядка таблиц, как они бэкапились.

Собственно. Сделал эксперимент. Взял employee.gdb. Вырубил rdb$primary1, добавил в country запись с дубликатом ПК, сделал бэкап.
Делаю рестор
gbak -c e.gbk e1.gdb -v
Thu Jul 23 17:09:02 2020: gbak: creating indexes
gbak: ERROR: connection lost to database
Thu Jul 23 17:09:12 2020: gbak: Exiting before completion due to errors
gbak: ERROR: connection lost to database

Упало! Упал гбак, ИБ при этом не упал.

Пускаю рестор с -va.
gbak -c e.gbk e1.gdb -v -va
На самом старте какие-то дикие тормоза.
Thu Jul 23 17:13:23 2020: gbak: creating indexes
Thu Jul 23 17:13:33 2020: gbak: cannot commit index RDB$FOREIGN3
gbak: ERROR: connection lost to database
gbak: ERROR: connection lost to database
Thu Jul 23 17:13:33 2020: gbak: Exiting before completion due to errors
gbak: ERROR: connection lost to database
gbak: ERROR: connection lost to database

Уже лучше. Явно видно что -va действительно ВКЛЮЧАЕТ валидацию. Смотрим внутрь баз.

Открываем базу от первого рестора.
I/O error for file "D:\IB2017\BIN\E11.GDB".
Error while trying to read from file.
Достигнут конец файла. .

Т.е. база тю-тю.

Открываем базу рестора с -va
Unsuccessful execution caused by a system error that precludes
successful execution of subsequent statements.
database file appears corrupt ().
wrong page type.
page 509 is of wrong type (expected 5, found 0).

И вторая тоже того, повреждена в процессе рестора (очешуеть можно!).
Тем не менее она открылась, а вот ibe системные таблицы не кажет. В rdb$indices неактивны вообще ВСЕ индексы, включая по системным таблицам. ПК-ФК на юзерские таблицы тоже неактивны все (значение 3)

Чё-то какой-то пугающий эксперимент.

p.s. кстати, что мне в голову впёрлась хе7, если у тебя 2017. Проверял на ней, версия 13.3.0.328, последняя (update 3).
23 июл 20, 17:22    [22172567]     Ответить | Цитировать Сообщить модератору
 Re: Активировать индексы  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 29015
hvlad,

кароч, у ИБ при ресторе коммит всех индексов идет в одной транзакции. Отсюда всё что есть - деактивировано нахрен :-)
23 июл 20, 17:31    [22172576]     Ответить | Цитировать Сообщить модератору
 Re: Активировать индексы  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 31305
а если с ключом -o[ne_at_time] ?
23 июл 20, 17:35    [22172580]     Ответить | Цитировать Сообщить модератору
 Re: Активировать индексы  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 29015
Мимопроходящий
а если с ключом -o[ne_at_time] ?

теперь это ключ -on[e_at_a_time]
потому что если написать
D:\IB2017\bin>gbak -c e.gbk e1.gdb -v -va -o
gbak: ERROR: ods version parameter missing
Thu Jul 23 18:58:04 2020: gbak: Exiting before completion due to errors

на букву О там дохрена чего
-ODS(_VERSION) restore to specific major ODS version number
-O(NE_AT_A_TIME) restore one table at a time
-OL(D_DESCRIPTIONS) save old style metadata descriptions
-OV(ERWRITE_DUMP) overwrite dump file

криворукие, что с них взять.

Впрочем, что с -on, что без, результат один (я ничего другого и не ожидал, т.к. -o это "не туда").
23 июл 20, 19:00    [22172650]     Ответить | Цитировать Сообщить модератору
 Re: Активировать индексы  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 61554
_Vasilisk_> А откуда оно могло появиться?

Да откуда угодно. Ты же не знаешь, что БД, с которой
снимался бэкап, - валидная. Там разные поломки могли
несколько раз случиться, включая кривые руки DBA/DBD.

Posted via ActualForum NNTP Server 1.5

23 июл 20, 20:46    [22172740]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Firebird, InterBase Ответить