Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Informix Новый топик    Ответить
 Error -103 ISAM error: illegal key descriptor (too many parts or too long)  [new]
falcon111
Member

Откуда:
Сообщений: 115
Упал один из вспомогательных серверов, аппаратные проблемы.
Сервер 12.10.FC4/w64, использующийся как свалка данных, на нем штук 20 огроменных таблиц с порядка миллиарда записей.
Железо подняли, база неюзабельна. Запустил читаться последний бэкап. Бэкап успешно дешифрован, тома разархивированы все успешно, т.е. сам архив целый. Сутки этот бэкап читался (почему ontape такой тормоз? 2мегабайта в секунду дбспейсы пишет, судя по монитору ресурсов), прочитался без вопросов. Раз уж такой даунтайм получился, сервер сразу же был проапгрейжен на 12.10.FC6 из-за глюка с крешем из-за лочек при last_committed изоляции в FC4. После запуска FC6 выдал:
19:12:17 Installing patch to upgrade ph_task code. version(13.06)
19:12:17 SCHAPI: Started 2 dbWorker threads.
19:12:17 SCHAPI: last statement EXECUTE PROCEDURE IFX_ALLOW_NEWLINE('T')
19:12:17 SCHAPI: [db_purge_tables 40-3083] Error -211 Cannot read system catalog (sysprocedures).
19:12:17 SCHAPI: [db_purge_tables 40-3083] Error -103 ISAM error: illegal key descriptor (too many parts or too long).
19:13:16 SCHAPI: last statement EXECUTE PROCEDURE IFX_ALLOW_NEWLINE('T')
19:13:16 SCHAPI: [autoreg migrate chg 47-10] Error -211 Cannot read system catalog (sysprocedures).
19:13:16 SCHAPI: [autoreg migrate chg 47-10] Error -103 ISAM error: illegal key descriptor (too many parts or too long).
19:13:16 SCHAPI: dbWorker thread cannot switch to database (destore08).

Дальнейшее показало что любая попытка работать с базой выдает либо
HY000:-211:[Informix][Informix ODBC Driver][Informix]Cannot read system catalog (sysprocedures).
либо
HY000:-211:[Informix][Informix ODBC Driver][Informix]Cannot read system catalog (systables).
ISAM и там и там -103
oncheck либо ошибок не находит либо обламывается с этой же ошибкой.
Пробовал dbexport - точно тот же результат.

Вопрос - что это было, и как с этим бороться. Это уже поврежденный последний бэкап был, или это FC4->FC6 апгрейд не прошел, либо что?
Пока поставил читаться предпоследний бэкап, но бэкап от версии FC4, а читаю его ontape FC6, допустимо это или сразу даунгрейдить версию и уже FC4 ontape-ом читать бэкап?
19 май 16, 20:27    [19195686]     Ответить | Цитировать Сообщить модератору
 Re: Error -103 ISAM error: illegal key descriptor (too many parts or too long)  [new]
Яковлев Павел
Member

Откуда: Ленинград
Сообщений: 233
По

autoreg migrate chg 47-10


я бы решил что, это апдейт структур при конвертации в FC6 обламывается.

Что, если запретить планировщик ? SCHAPI это же он и без него прекрасно работает.

Запрещается созданием INFORMIXDIR/etc/sysadmin/stop

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

Не взлетит - и хочется разобраться - я бы на чистой установке FC4 опять раскатал бэкап, потом ещё при FC4 запретил планировщик и только потом повторил бы FC6

Из общих фигней напомню, что смена версий не рекомендуется при незавешённых inplace-alter.
19 май 16, 22:16    [19195973]     Ответить | Цитировать Сообщить модератору
 Re: Error -103 ISAM error: illegal key descriptor (too many parts or too long)  [new]
falcon111
Member

Откуда:
Сообщений: 115
ontape FC6 уже вылетел, что, впрочем, было ожидаемо, хотя на других серверах FC5 (не 6) бэкапы от FC4 читал.
Вернул FC4, сейчас читаю бэкап, проверю его работоспособность, потом попробую заблокировать планировщик (из-за глюка в апгрейде на какую-то версию уже приходилось это делать) и посмотрю что выйдет. alter-ов там уже пару лет нет, структура стабильная, там нагрузка конская, а структуры не меняются.
Спасибо за подсказку, проверим.
19 май 16, 22:52    [19196068]     Ответить | Цитировать Сообщить модератору
 Re: Error -103 ISAM error: illegal key descriptor (too many parts or too long)  [new]
falcon111
Member

Откуда:
Сообщений: 115
Восстановился предпоследний бэкап, сервер уже родной FC4, апгрейда версии не было.
Бэкап тоже не работает с теми же записями в логе:
19:34:44 SCHAPI: Started 2 dbWorker threads.
19:34:45 SCHAPI: [db_purge_tables 40-3078] Error -211 Cannot read system catalog (sysprocedures).
19:34:45 SCHAPI: [db_purge_tables 40-3078] Error -103 ISAM error: illegal key descriptor (too many parts or too long).
19:35:45 SCHAPI: [autoreg migrate chg 47-10] Error -211 Cannot read system catalog (sysprocedures).
19:35:45 SCHAPI: [autoreg migrate chg 47-10] Error -103 ISAM error: illegal key descriptor (too many parts or too long).
19:35:45 SCHAPI: dbWorker thread cannot switch to database (destore08).

Как оживить базу?
20 май 16, 19:40    [19200292]     Ответить | Цитировать Сообщить модератору
 Re: Error -103 ISAM error: illegal key descriptor (too many parts or too long)  [new]
Яковлев Павел
Member

Откуда: Ленинград
Сообщений: 233
А планировщик отключить перед началом восстановления ?
24 май 16, 22:45    [19215150]     Ответить | Цитировать Сообщить модератору
 Re: Error -103 ISAM error: illegal key descriptor (too many parts or too long)  [new]
falcon111
Member

Откуда:
Сообщений: 115
В общем, данные было решено вытягивать на резервном сервере, а этот сервер вернуть в онлайн без данных. dbaccess, базу удалил, создал, создал таблицы-процедуры, вывел в онлайн, работает. На тестовом сервере пытался читать старые архивы, ни один не работает. Тут меня угораздило взять и прочитать на тестовом НОВЫЙ архив, уже с пересозданной базы, и... ОНО НЕ РАБОТАЕТ точно таким же образом!! Сервер сейчас онлайн, запросы отбабатывает, данные принимает, все ок, но вот его бэкапы - не читаются либо Cannot read system catalog (sysprocedures) либо Cannot read system catalog (systables). Вот таким вот образом.
На выходных попробую дбэкспорт хотя бы новых данных, пока сервер вроде бы работает, после чего сервер реинициализировать буду.
2 июн 16, 13:43    [19249948]     Ответить | Цитировать Сообщить модератору
 Re: Error -103 ISAM error: illegal key descriptor (too many parts or too long)  [new]
Яковлев Павел
Member

Откуда: Ленинград
Сообщений: 233
А бэкап БЕЗ этой базы накатывается ?
2 июн 16, 21:32    [19252143]     Ответить | Цитировать Сообщить модератору
 Re: Error -103 ISAM error: illegal key descriptor (too many parts or too long)  [new]
яфшуеі
Guest
правильно ли понимаю?
сейчас
1. рабочий и тестовій сервер - версии IDS идентичны
2. На рабочем бекап делается без ошибок
3. Рабочий сервер перезапускается без ошибок
4. На тестовом и на рабочем сервере присутствует файл $INFORMIXDIR/etc/sysadmin/stop
5. При поднятии со свежего бекапа возникает ошибка


Используется ли сжатие бекапа?
Бекап пишется в файл или в каталог?
3 июн 16, 12:07    [19254024]     Ответить | Цитировать Сообщить модератору
 Re: Error -103 ISAM error: illegal key descriptor (too many parts or too long)  [new]
falcon111
Member

Откуда:
Сообщений: 115
А бэкап БЕЗ этой базы накатывается ?

Накатывается и с ней и без нее. Только потом не работает.

яфшуеі
правильно ли понимаю?
сейчас
1. рабочий и тестовій сервер - версии IDS идентичны
2. На рабочем бекап делается без ошибок
3. Рабочий сервер перезапускается без ошибок
4. На тестовом и на рабочем сервере присутствует файл $INFORMIXDIR/etc/sysadmin/stop
5. При поднятии со свежего бекапа возникает ошибка

Используется ли сжатие бекапа?
Бекап пишется в файл или в каталог?

1. Да
2. Да, ontape
3. Он перестал работать с той же -103, рабочая база была удалена и создана, сейчас работает, и перезапускается нормально.
4. Хоть с ним, хоть без него, хоть с остановленной и удаленой базой sysadmin - ничего не меняется.
5. Да, на тестовый грузится бэкап без ошибок, сервер нормально стартует, все ок, но любой запрос приводит к ошибке.

Насколько я понимаю, побилась какая-то sys* база, в евент-логе самого сервера найдены записи ошибок контроллера hdd, что, видимо, все объясняет.
3 июн 16, 19:30    [19256538]     Ответить | Цитировать Сообщить модератору
 Re: Error -103 ISAM error: illegal key descriptor (too many parts or too long)  [new]
Яковлев Павел
Member

Откуда: Ленинград
Сообщений: 233
falcon111
А бэкап БЕЗ этой базы накатывается ?

Накатывается и с ней и без нее. Только потом не работает.


Я не правильно спросил.

Бэкап без этой базы запускается после наката ? Апдейтится в новую версию ?

Разумеется с выключенным планировщиком.

яфшуеі
.....
Насколько я понимаю, побилась какая-то sys* база, в евент-логе самого сервера найдены записи ошибок контроллера hdd, что, видимо, все объясняет.


Так это.... а пересоздать sys* ?
7 июн 16, 22:50    [19269040]     Ответить | Цитировать Сообщить модератору
 Re: Error -103 ISAM error: illegal key descriptor (too many parts or too long)  [new]
Яковлев Павел
Member

Откуда: Ленинград
Сообщений: 233
Кроме того,

Error -103 ISAM error: illegal key descriptor (too many parts or too long).

это же про индекс.

Почекать имеющиеся, плохой дропнуть и пересоздать.
7 июн 16, 22:53    [19269045]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Error -103 ISAM error: illegal key descriptor (too many parts or too long)  [new]
falcon111
Member

Откуда:
Сообщений: 115
Опять я и опять с той же проблемой.
На этот раз другой сервер, версия сервера 12.10FC9, работает, все хорошо. ontape-ом делается бэкап, переносится на тестовый сервер той же версии, там бэкап читается, все ок, сервер переводится в онлайн, и все запросы разбиваются об

HY000:-211:[Informix][Informix ODBC Driver][Informix]Cannot read system catalog (sysprocedures)
После первого запроса к базе, и об

HY000:-211:[Informix][Informix ODBC Driver][Informix]Cannot read system catalog (systables).
ISAM error:-103
При любом последующем запросе.

Что характерно, первый запрос после старта сервера всегда ругается на sysprocedures, все последующие - на systables.

Это наводит меня на мысль, что основной сервер если что точно так же не прочтет свой же бэкап, как это уже было на другом сервере.
oncheck -cIxRecDS на основном сервере не выдает никакого криминала. А на тестовом - обламывается с

Validating indexes for [имя базы]:informix.systables...
oncheck failure: gettab()
ISAM error: illegal key descriptor (too many parts or too long).

Подскажите куда можно копать в этой ситуации, пока есть время разобраться, что это все значит, а то что-то мне стремно? А я пока думаю, что одного ontape-а маловато, возникает мысль, что придется бэкапиться еще дбэкспортом :(
18 авг 17, 02:38    [20732899]     Ответить | Цитировать Сообщить модератору
 Re: Error -103 ISAM error: illegal key descriptor (too many parts or too long)  [new]
falcon111
Member

Откуда:
Сообщений: 115
На тестовом сервере накатил ontape с основного сервера. Работать с базой невозможно. dbaccess, удалил свою базу, на основном сервере сделал dbexport, архив dbimport-нул на тест. Сделал бэкап тестового ontape, прочитал этот бэкап на этот же тестовый сервер, все работает.

Таким же образом было запланировано восстановление основного сервера.

Сделал dbexport, удалил базу, пересоздал базу dbimport-ом, запустил сервер в работу.
Сделал с него бэкап, накатил этот бэкап на тестовый сервер... Получаю HY000:-211:[Informix][Informix ODBC Driver][Informix]Cannot read system catalog (systables). ISAM error:-103 при любой попытке обратиться к тестовому серверу.

Выходит, удалить базу на основном сервере мало, надо реинициализировать весь сервер, заново добавлять дбспейсы и пр и только потом повторять dbimport?
19 авг 17, 23:48    [20736465]     Ответить | Цитировать Сообщить модератору
 Re: Error -103 ISAM error: illegal key descriptor (too many parts or too long)  [new]
falcon111
Member

Откуда:
Сообщений: 115
Сегодня был еще один этап борьбы за читаемость бэкапов.
На тестовом сервере выполнил полную реинициализацию. oninit -iy, добавление спейса под физ-логи и вынесение в него физ-логов, добавление спейса под лог-логи, перенос и досоздание лог логов в нем, потом добавление всех дбспейсов под базу. В итоге, получил готовый к дбимпорту сервер, выполнил на нем ontape бэкап, закачал его на рабочий сервер.

На рабочем сервере сделал дбэкспорт, остановил сервер, физически удалил все дбспейсы, затем прочитал ontape с свежереинициализированного тестового сервера, перевел сервер онлайн, сделал dbimport, потом ontaps -s -L 0 -U <база>, после чего вернул сервер в работу, все работает.

Тут же штатно сделал бэкап онтейпом, перекачал его на тест и...
в логе тестового сервера все началось так:
00:52:14  SCHAPI: Started 2 dbWorker threads.
00:52:16  SCHAPI:  last statement EXECUTE PROCEDURE IFX_ALLOW_NEWLINE('T')
00:52:16  SCHAPI: [db_purge_tables 39-13] Error -211 Cannot read system catalog (sysprocedures).

00:52:16  SCHAPI: [db_purge_tables 39-13] Error -103 ISAM error:  illegal key descriptor (too many parts or too long).


Ну и, до боли знакомые ошибки при попытке работать с базой на тесте.

Разница между тестовым и основным сервером - основной помощнее, побольше ядер и рамы, конфиги одинаковые за исключением того, что на тесте меньше SHMVIRTSIZE и SHMADD, пожиже VPCLASS-ы, STMT_CACHE, PDQ и буферы.

Вот теперь я в полных непонятках. Подскажите, что это за хрень и как это побороть.
22 авг 17, 01:23    [20740172]     Ответить | Цитировать Сообщить модератору
 Re: Error -103 ISAM error: illegal key descriptor (too many parts or too long)  [new]
cpr
Member

Откуда: Rostov-on-Don
Сообщений: 717
falcon111,

А пользователь с правами recource может в этой базе создать какую нибудь тестовую ХП?
24 авг 17, 15:05    [20747231]     Ответить | Цитировать Сообщить модератору
 Re: Error -103 ISAM error: illegal key descriptor (too many parts or too long)  [new]
falcon111
Member

Откуда:
Сообщений: 115
cpr,

В смысле в работоспособном или в восстановленном из бэкапа и неработающем состоянии?
На неработающем - не может, сейчас попробовал:
HY000:-211:[Informix][Informix ODBC Driver][Informix]Cannot read system catalog (sysaggregates).
ISAM error:-103

В дополнение скажу, еще вот что. Если бэкапы с основного сервера не читаются на тесте, но при этом пустая база с теста (подготовленный для дбимпорта реиниченный сервер) нормально зачиталась на боевой, я уже от безысходности сделал следующее:
1.на тестовом развернул подготовленный под дбимпорт бэкап
2.с основного слил дбэкспорт, перекачал архив на тестовый, там сделал дбимпорт
3.слил ontape бэкап с тестового и залил в основной сервер. Получил на этот раз неработоспособную базу на основном. Пришлось опять на основной накатить подготовленный бэкап и дбимпортнуть данные назад.

Получается, что между тестовым и основным серверами бэкап не читается ни в одну сторону.
Что делать не знаю, выходит, что бэкапа по-сути нет, если что случится с основным сервером, его бэкап может точно так же не прочитаться на любой другой сервер.
24 авг 17, 15:44    [20747350]     Ответить | Цитировать Сообщить модератору
 Re: Error -103 ISAM error: illegal key descriptor (too many parts or too long)  [new]
cpr
Member

Откуда: Rostov-on-Don
Сообщений: 717
falcon111,

Я думаю что это не проблема бэкапа.
Скорее это информих криво стоит.
Сравните права на всех файлах в /opt/informix/.
24 авг 17, 18:38    [20747767]     Ответить | Цитировать Сообщить модератору
 Re: Error -103 ISAM error: illegal key descriptor (too many parts or too long)  [new]
falcon111
Member

Откуда:
Сообщений: 115
Сервер win64. При этом инсталляции полностью идентичны.
25 авг 17, 02:46    [20748225]     Ответить | Цитировать Сообщить модератору
 Re: Error -103 ISAM error: illegal key descriptor (too many parts or too long)  [new]
cpr
Member

Откуда: Rostov-on-Don
Сообщений: 717
falcon111,

по винде ничего не скажу.
Но мне приходилось сталкиваться с похожими проблемами и причина была в кривой установке IDS.

Проверьте следующий вариант.
На той системе где не работает восстановленый бэкап просто проинициализируйте дбпространства и не поднимайте бэкап. Попробуйте просто создать пустую бд и создать в ней хранимую процедуру. Если это не получиться, то форматируйте свою ОС и переставляйте Informix.
Ну или обращайтесь в саппорт.
25 авг 17, 12:34    [20749021]     Ответить | Цитировать Сообщить модератору
 Re: Error -103 ISAM error: illegal key descriptor (too many parts or too long)  [new]
falcon111
Member

Откуда:
Сообщений: 115
cpr
Проверьте следующий вариант.
На той системе где не работает восстановленый бэкап просто проинициализируйте дбпространства и не поднимайте бэкап. Попробуйте просто создать пустую бд и создать в ней хранимую процедуру. Если это не получиться, то форматируйте свою ОС и переставляйте Informix.
Ну или обращайтесь в саппорт.


Реинициализированный сервер нормально принимает дбимпортом всю базу, включая процедуры и полностью работает.
Оба сервера.
ДО дбимпорта и бэкапы пустых спейсов переносятся между ними нормально. ПОСЛЕ дбимпорта на любом из серверов - сервер работает, и все с ним хорошо, но вот его бэкап на других серверах уже разворачивается неработоспособным.

Самое смешное что есть еще пара серверов с другой базой, там тоже 12.10.FC9/w64 и там бэкапы прекрасно переносятся (тьфу*3).
Разница в том, что база там была создана еще в 10.00 версии, кажется и с тех пор штатно апгрейдилась при апдейтах версии сервера.
25 авг 17, 17:02    [20749944]     Ответить | Цитировать Сообщить модератору
 Re: Error -103 ISAM error: illegal key descriptor (too many parts or too long)  [new]
яфшуеі
Guest
Случайно сервера не в виртуальніх средах с расширающимися дисками и "тонкими" томами на массиве?
BACKUP/RESTORE filter используете?

Если размер позволяет, с внешним бекапом(копирование чанков) восстановление работает?
26 авг 17, 20:34    [20751337]     Ответить | Цитировать Сообщить модератору
Все форумы / Informix Ответить