|
Не могу пересоздать индекс
|
|||
---|---|---|---|
#18+
Добрый день столкнулся со странной ситуацией, версия 11.50FC8W2 oncheck ругается на индекс: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
Пересоздание индекса не исправляет проблему: Код: plaintext 1. 2. 3.
Куда рыть, непонятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2011, 10:41 |
|
Не могу пересоздать индекс
|
|||
---|---|---|---|
#18+
victor16, 1. какой тип поля ? 2. какие особенности таблицы ? фрагментация ? 3. уверены. что индекс действительно дропается, а потом пересоздается ? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2011, 10:48 |
|
Не могу пересоздать индекс
|
|||
---|---|---|---|
#18+
vasilis1. какой тип поля ? NVARCHAR(254) vasilis2. какие особенности таблицы ? фрагментация ? сама таблица не фрагментирована, но индексы хранятся в другом пространстве. vasilis3. уверены. что индекс действительно дропается, а потом пересоздается ? да, конечно, после удаления индекса oncheck ругается на отсутствие индекса. Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2011, 11:02 |
|
Не могу пересоздать индекс
|
|||
---|---|---|---|
#18+
Проблема м.б. в RowID ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2011, 12:33 |
|
Не могу пересоздать индекс
|
|||
---|---|---|---|
#18+
victor16, Oncheck на саму таблицу не ругается случаем? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2011, 13:08 |
|
Не могу пересоздать индекс
|
|||
---|---|---|---|
#18+
DrGonzovictor16, Oncheck на саму таблицу не ругается случаем? нет, не ругается. Начал выяснять, похоже, проблема в строках, содержащих только пробелы. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2011, 13:12 |
|
Не могу пересоздать индекс
|
|||
---|---|---|---|
#18+
victor16vasilis1. какой тип поля ? NVARCHAR(254) vasilis2. какие особенности таблицы ? фрагментация ? сама таблица не фрагментирована, но индексы хранятся в другом пространстве. vasilis3. уверены. что индекс действительно дропается, а потом пересоздается ? да, конечно, после удаления индекса oncheck ругается на отсутствие индекса. Код: plaintext
если индекс дропнут, то ончек не должен ругаться ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2011, 13:26 |
|
Не могу пересоздать индекс
|
|||
---|---|---|---|
#18+
cprесли индекс дропнут, то ончек не должен ругаться все ж ругается если указать, что нужно проверять именно этот индекс, а не всю базу или таблицу: Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2011, 14:05 |
|
Не могу пересоздать индекс
|
|||
---|---|---|---|
#18+
victor16cprесли индекс дропнут, то ончек не должен ругаться все ж ругается если указать, что нужно проверять именно этот индекс, а не всю базу или таблицу: Код: plaintext
У меня была похожая проблема еще на 7.31. По багам не в курсе в момент возникновения саппорт был просрочен. Помогла перезагрузка таблицы с другим порядком полей. Но такой воркараунд не каждому подейдет. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2011, 14:30 |
|
Не могу пересоздать индекс
|
|||
---|---|---|---|
#18+
onstat- Помогла перезагрузка таблицы с другим порядком полей. вспомнил , у меня varchar или перед или после индексируемого поля , и само поле вроде было varchar. Что натолкнуло на мысль , что есть баг и извлечением varchar полей таблице или в ключах индекса. Поле перенесли между полями фиксированной длины и все зажужжало . Приблизительно так , ситуация была не менее 10 лет назад. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2011, 14:51 |
|
Не могу пересоздать индекс
|
|||
---|---|---|---|
#18+
victor16, была почти точь-в-точь такая же проблема на 11.5.FC8.WE (проявилась сразу после обновления с FC6, проявляется и на FC8W2) Т.е. портился индекс по полю NVARCHAR, если есть пробельные значения, при использовании кодировки 1251. Пересоздание индекса не помогало, пришлось откатиться на FC6. По этому поводу создавал PMR. Была долгая переписка и в конечном результате меня уведомили, что этот баг пофикшен в 11.5.FC9. Сам я результативности фикса по факту не проверял (т.к. к моменту, когда выпустили этот FC9 срок поддержки закончился и поэтому скачать его нет возможности). ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2011, 14:57 |
|
Не могу пересоздать индекс
|
|||
---|---|---|---|
#18+
А, еще. У меня проявлялось на неск. таблицах, причем на некоторых помогал такой воркэраунд: поменять длину поля NVARCHAR (в сторону увеличения и обратно). Т.е. напр., если было NVARCHAR(30), то преобразовать его сначала к NVARCHAR(32), а после этого сразу же назад на NVARCHAR(30). После этого баг не проявлялся. Но для остальных таблиц с таким же глюком, увы, это не помогало. Могу предположить, что в качестве еще одного обходного маневра поможет замена всех значений с пробелом на NULL(предварительно выгрузив таблицу, поменяв "вручную" в файле выгрузки и загрузив обратно). Почему нужна выгрузка - иначе "добраться" из-за испорченного индекса ко всем строкам у меня не давало... Но остается открытым вопрос "а что будет если опять появится пробельное значение?". Триггер на модификацию вешать, что ли? Отакэ. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2011, 15:06 |
|
Не могу пересоздать индекс
|
|||
---|---|---|---|
#18+
Спасибо за ответы. Теперь понятно, что это все-таки баг. Чтож, теперь будем думать, как обойти проблему. Ситуация усугубляется, что таблица участвует в ER и альтерить будет затруднительно. На сайте IBM посмотрел, версии 11.50FС9 пока еще нет, остаются другие варианты: Открыть PMR и попросить отдельную сборку, кстати не факт, что проапгрейдится, поскольку сервер будет считать, что структура индекса порушена Дропнуть индекс и заапдейтить на NULL, создать индекс заново. Пинать разработчиков, чтобы не совали пробельные строки в базу. Кстати, если уж альтерить, кто может что сказать насчет LVARCHAR? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2011, 21:08 |
|
Не могу пересоздать индекс
|
|||
---|---|---|---|
#18+
victor16, Из подходящих под описание дефектов вижу только APAR IC74628: INDEX CORRUPTION AND WRONG RESULTS WITH NULL OR EMPTY STRING VALUES IN NVARCHAR FIELDS. Судя по описанию, проявляется только с индексами, созданными по одному полю. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2011, 11:09 |
|
Не могу пересоздать индекс
|
|||
---|---|---|---|
#18+
Судя по всему, так оно и есть, очень похоже на APAR IC74628. C проблемой удалось справиться следующим образом: поскольку таблица участвует в ER (пара из 2-х серверов), сначала удалил реплику выгрузил данные с первого сервера и удалил здесь таблицу удалил проблемный индекс на втором сервере создал таблицу с аналогичной структурой, но с другим именем на втором сервере и загрузил туда данные оператором MERGE попытался слить обе таблицы на втором сервере выскочила ошибка -396 (ISAM=-111) пересоздал primary key на основной таблице на втором сервере теперь оператор MERGE выполнился без ошибок oncheck на втором сервере тоже прошел без ошибок создал таблицу на первом сервере, констрайнты и индексы нее, включая проблемный заново создал реплику между серверами для основных таблиц синхронизировал данные через команду Код: plaintext
oncheck на первом сервере тоже прошел без ошибок Таким образом, удалось побороть проблему. В конечном счете, помогло скорее всего пересоздание первичного констрайнта, хотя лично мне непонятно как. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2011, 11:55 |
|
|
start [/forum/topic.php?fid=44&msg=37310771&tid=1607333]: |
0ms |
get settings: |
25ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
331ms |
get tp. blocked users: |
2ms |
others: | 327ms |
total: | 753ms |
0 / 0 |