powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Целостность ветки глобала, битый индекс
36 сообщений из 36, показаны все 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
Целостность ветки глобала, битый индекс
    #37399064
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pandorray,

утилита ^REPAIR тоже вылетает по <SUBSCRIPT>? Попробуйте:
%SYS>d ^REPAIR

***Block Repair/Examine Program***


Directory: : d:\cachesys\mgr\ => user <-- введите путь к вашей БД
Global Directory Block: 3

Map Blocks: 2 62466 62467
Entering Block Repair Menu
Block #: ^FC
DATA BLOCK = 145436 TOP POINTER BLOCK = 145437

Block # 145436 Type: 8 DATA
Link Block: 0 Offset: 424
Count of Nodes: 33 Collate: 5 Big String Nodes: 0
Pointer Length:2 Next Pointer Length:0 Diff Byte:Hex 0
Pointer Reference: ^FC
Next Pointer Reference:
Next pointer stored? No


--more--

# Node Data
1 ^FC
2 ^FC("что-то") данные *
3 ^FC("что-то еще") данные еще *
4 ...
Если нет (не вылетает), входите в меню редактирования (4) Edit Current Block) и (если сумеете) вставьте нужный узел (2 - Insert Node), ну и обязательно удалите ошибочный (1 - Delete Node). Выйдя из меню редактирования, не забудьте записать блок (5 - Write Current Block to Disk).
Мне кажется, это проще, чем писать специализированный код копирования глобала с обходом ошибочных мест. Минус этого подхода: в старых версиях Cache REPAIR была менее удобная, как сейчас. С какой версии она стала работать по-человечески, уже не помню.
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37399380
pandorray
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Maslov ,

Спасибо большущее!!!!!!!!
Удалось удалить эти битые ветки!!!
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37400225
Onix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pandorray,

А длина индекса какая? $L??
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37400767
pandorray
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Onix , я же так и не смогла взять индекс.
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37402342
Onix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pandorray,

Сорри, не внятно сформулировал, я к тому, может в той схеме формирования индексов , которая у вас используется, может возникнуть ситуация, что длина индекса будет > положеного, а 4+ каше ето не отслеживает? типа не ловит <maxstr> идр.?
В итоге приводит в проблеме описаной выше. Может поставить контроль $L индекса при записи?
как версия ...
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37439576
pandorray
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И снова подниму вопрос!

Эксперименты в терминале, кто как может прокомментировать? У меня уже слов нет.
Знающие, подскажите!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
USER>s $p(@sklad1,d, 26 )= 111 
 
USER>w $p(@sklad1,d, 26 )
 111 
USER>s $p(@sklad1,d, 26 )= 11111 
 
USER>w $p(@sklad1,d, 26 )
 1 ! 111 

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
USER>s $p(@sklad1,d, 26 )= 1111 
 
USER>w $p(@sklad1,d, 26 )
! 111 
USER>s $p(@sklad1,d, 26 )= 21669 
 
USER>w $p(@sklad1,d, 26 )
 2 ! 669 
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37439580
pandorray
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проверка на целостность ошибок не выдает. Все хорошо.
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37439676
pandorray
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Убила эту ветку, создал заново - "!" на месте
создаешь в другом месте - все нормально
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37442447
Onix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pandorray,

Чему равно d?
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37443223
pandorray
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Onix, d = $c(9)
...
Рейтинг: 0 / 0
Целостность ветки глобала, битый индекс
    #37445530
Onix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pandorray,

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


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