powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Целостность ветки глобала, битый индекс
25 сообщений из 36, страница 1 из 2
Целостность ветки глобала, битый индекс
    #37395540
pandorray
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Давно читаю форум, но со своей проблемой впервые решила к вам обратится.
Подскажите пожалуйста, кто сталкивался с такой ситуацией.
Версия Cache 4.1.3.
Проверка на целостность не дает ошибок - ни в целом база, ни конкретный глобал.
Но! Когда проходим глобал по $o на битом индексе цикл вылетает с ошибкой <SUBSCRIPT>, сам индекс я не знаю и как его определить пока не придумала.
При экспорте глобала в разных вариантах смогла добиться ошибки
ОШИБКА #570: Глобал ^FC содержит управляющие символы.
Восстановление этого глобала может завершиться неудачей
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37395594
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pandorrayНо! Когда проходим глобал по $o на битом индексе цикл вылетает с ошибкой <SUBSCRIPT>, сам индекс я не знаю и как его определить пока не придумала.
Выдайте индексы по $o на терминал - узнаете предыдущий перед битым - может наведет на мысль :)
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37395634
pandorray
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ser_shu,
пробовала, но индекс там не инкремент. Поэтому не особо помогает.
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37395747
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pandorrayНо! Когда проходим глобал по $o на битом индексе цикл вылетает с ошибкой <SUBSCRIPT>, сам индекс я не знаю и как его определить пока не придумала.
На экран его выводить. Либо в значение какого-либо глобала...

<SUBSCRIPT> может давать на "длинном" индексе... Хотя не понять как он туда записался.
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37395765
pandorray
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,
Вот в том то и дело, что он его не берет и вывести его не могу.

9786**1000***** ; предыдущий индекс

FOR S a=$O(^FC("Spr","SPR",1,a)) Q:a="" W a,!
^
<SUBSCRIPT>

а вот следующий уже не берет
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37395779
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pandorray , а если твой глобал с помощью $QUERY покрутить? Хотя тот же <SUBSCRIPT> можно получить...

Попробуй тот глобал в xml файл записать... Чего будет?
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37395871
pandorray
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa, $QUERY дает тот же <SUBSCRIPT>
А насчет выгрузки в xml можно поподробнее? Это вы про экспорт?
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37395884
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да экспорт но в XML
d $system.OBJ.Export("FC.GBL","c:\fc.xml")
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37395897
pandorray
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DAiMor ,
увы...
BAZ>d $system.OBJ.Export("FC.GBL","c:\fc.xml")
Экспорт в XML начался в 08/15/2011 13:55:26
Экспортируемый глобал: ^FC
<SUBSCRIPT>outputClass+178^%occXMLExport


Из-за чего вообще мог появится такой индекс? И как с этим бороться?
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37395980
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pandorray , прискорбно...

Если "программно" никак до того значения индекса не добраться - остаётся ждать любителей поколупаться в блоках "напрямую"...
Как такое получается я х/з...
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37396013
pandorray
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa , все равно спасибо за помощь)
Буду ждать!
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37396017
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
остается самый простой вариант, это копировать весь глобал в другой с пропуском ошибок, удалить старый глобал и заменить его на скопированный новый
таким копированием вы маловероятно что потеряется важные данные, вы и так к ним не имеете доступа
с 4.1.3 поработать не пришлось, так что могу ошибиться и дать неработающий код
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37396021
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, ламерский способ это написать программу с обходом глобала и копированием отдельных строк в другой глобал,
а потом обойти в обратном направлении и тоже до ошибки.

Ну а более интересный - это d ^REPAIR, только лучше базу забэкапить, а то шансы ее добить больше шансов восстановить.
Перед этим выполните ^INTEGRIT, чтобы узнать номера сбойный блоков и оттуда плясать.
Совет от себя - рисуйте связи блоков на бумаге, в памяти это удержать очень сложно.
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37396039
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMorостается самый простой вариант, это копировать весь глобал в другой с пропуском ошибок, удалить старый глобал и заменить его на скопированный новый
Во-во.
Такое же хотел сейчас написать... Пройтись копированием "от начала" до ошибки... А потом "от конца" до ошибки... Правда тех ошибок может быть несколько... Тогда потеряется часть данных, что "внутри".
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37396157
pandorray
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н. ,
у меня появилось несколько вопросов.
1) do ^INTEGRIT - не выдает ошибки
2) do ^REPAIR - с помощью этого я нашла 2 записи, которые у меня битые
Они даже как то странно в терминале вывелись, откуда многоточия????
^FC("Spr","SPR",1,"9787*1*56*30*"...)
^FC("Spr","SPR",1,"9787*1*56*50*"...)
Остальные записи в виде
^FC("Spr","SPR",1,"9790*101*1517*****")

вопрос состоит в том, как их можно исправить по нормальному или только скопировать до/после?
Просто записи очень надо восстановить... А текстовка там вывелась как
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37396301
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
REPAIR восстанавливает блочную целостность, интегрит проверят ее же.
Значит с этим все нормально, просто в самом глобале что-то не то.

А вы настрояки локали, языков не меняли?
Если попробовать поднять базу на UTF8 кодировке?
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37396307
pandorray
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И такую ситуацию удалось обнаружить только уже целеустремленным поиском, когда стало известно в какой ветке глюк происходит.
А как быть если неизвестно где такой битый индекс? База под 8Гб, не будешь же каждый глобальчик в $order пропускать. Есть какие то другие пути решения? (с учетом того что проверка целостности говорит что все-все цело).
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37396313
pandorray
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.REPAIR восстанавливает блочную целостность, интегрит проверят ее же.
Значит с этим все нормально, просто в самом глобале что-то не то.

А вы настрояки локали, языков не меняли?
Если попробовать поднять базу на UTF8 кодировке?

Ничего не меняли. Насчет кодировки UTF8 не могу ничего сказать - надо будет проверить.
ПО работало довольно долго стабильно. Откуда появились такие битые индексы???
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37396375
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pandorrayОни даже как то странно в терминале вывелись, откуда многоточия????
^FC("Spr","SPR",1,"9787*1*56*30*"...)
^FC("Spr","SPR",1,"9787*1*56*50*"...)
Остальные записи в виде
^FC("Spr","SPR",1,"9790*101*1517*****")

похоже на индексацию набора полей, разделенных *.
Тогда, скорее всего в наборе полей "9787*1*56*30*"... в пятом поле попал спецсимвол, который потом попал в индекс.
Если у Вас такая структура - попробуйте найти эти данные, исправить и снова записать индекс.
Только желательно в этом поле со спецсимволом точно определить содержимое, чтобы уничтожить "плохой" индекс.
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37396409
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pandorray ,

Почему записались неверные данные сейчас сложно сказать, но можно попробовать в рамках процесса временно включить NullSubscripts и посмотреть исчезнет ли ошибка <SUBSCRIPT> при проходе по глобалу: $ZUTIL(68,1) -- Null Subscript Mode Process Switch

PS: я сейчас в отпуске и очередной раз ответить смогу ближе к октябрю.
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37397094
pandorray
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ser_shupandorrayОни даже как то странно в терминале вывелись, откуда многоточия????
^FC("Spr","SPR",1,"9787*1*56*30*"...)
^FC("Spr","SPR",1,"9787*1*56*50*"...)
Остальные записи в виде
^FC("Spr","SPR",1,"9790*101*1517*****")

похоже на индексацию набора полей, разделенных *.
Тогда, скорее всего в наборе полей "9787*1*56*30*"... в пятом поле попал спецсимвол, который потом попал в индекс.
Если у Вас такая структура - попробуйте найти эти данные, исправить и снова записать индекс.
Только желательно в этом поле со спецсимволом точно определить содержимое, чтобы уничтожить "плохой" индекс.

В пятом поле не должен был попасть спецсимвол - там должно было быть число, но чем черт не шутит)
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37397097
pandorray
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit pandorray ,

Почему записались неверные данные сейчас сложно сказать, но можно попробовать в рамках процесса временно включить NullSubscripts и посмотреть исчезнет ли ошибка <SUBSCRIPT> при проходе по глобалу: $ZUTIL(68,1) -- Null Subscript Mode Process Switch

PS: я сейчас в отпуске и очередной раз ответить смогу ближе к октябрю.

Спасибо за совет. Проверила. Но увы... Ошибка <SUBSCRIPT> все равно выскакивает при проходе по глобалу.
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37398744
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скорее всего ошибка в индексе ^FC("Spr","SPR",1,"9787*1*56*40*"...)
Точки указывают на наличие спец.символов. Если обход по Qwery то вырежи индекс потом выведи его на экран затем выведи скан коды этого индекса через функцию $A() и посмотри какие коды в действительности записаны в индекс.
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37399029
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_shar,

как же она вырежет индекс, если прога вылетает по <SUBSCRIPT>.
Кстати, начиная с Cache 4.1 (с появлением "нового" формата БД), запрет на управляющие символы в индексах был снят. Например,
Код: plaintext
for i= 0 : 1 : 31  set ^zzz($char(i))=i ; и никаких проблем
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37399055
pandorray
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Maslovmisha_shar,

как же она вырежет индекс, если прога вылетает по <SUBSCRIPT>.
Кстати, начиная с Cache 4.1 (с появлением "нового" формата БД), запрет на управляющие символы в индексах был снят. Например,
Код: plaintext
for i= 0 : 1 : 31  set ^zzz($char(i))=i ; и никаких проблем


Вы, правы, я проверяла вот таким методом, и все индексы читаются в проводнике, проходятся по $o
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
s i= 0 ,j= 0 ,k= 0 
for i= 0 : 1 : 7   do
.s idx=""
.for j= 0 : 1 : 31   do 
..s idx=idx_$c(k)
..s k=k+ 1 
.s ^testGl(idx)=""

Поэтому я и понять не могу что ж за символ туда мог попасть...
...
Рейтинг: 0 / 0
25 сообщений из 36, страница 1 из 2
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Целостность ветки глобала, битый индекс
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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