powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Восстановление данных. Прямое вмешательство в cache.dat
24 сообщений из 24, страница 1 из 1
Восстановление данных. Прямое вмешательство в cache.dat
    #35891781
Andrew Kovalchuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поиск в базе посредством sql-запроса результатов не дает. Просмотр в hexview подтверждает, что данные в базе есть. Подозреваю, что они помечены как "удаленные".
Вопросы:
1. Влияет ли индексация на физическое наличие данных в файле?
2. Как восстановить удаленные (но имеющиеся в файле) данные?

Спасибо.
...
Рейтинг: 0 / 0
Восстановление данных. Прямое вмешательство в cache.dat
    #35892588
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем понятно про какой "файл" идет речь...

Ваши данные в классе? Раз идет речь про sql... В классах нет "пометки на удаление" и потом некой "паковки класса"...
Теоретически индексы могут "попортится" (но мы с этим не сталкивались)... Тогда sql-запросы, использующие порченые индексы, будут показывать неверные результаты... Но первая же переиндексация все восстановит.
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
Восстановление данных. Прямое вмешательство в cache.dat
    #35892731
Andrew Kovalchuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть класс ClassName (persistent). Экземпляры этого класса хранятся в файле cache.dat (традиция, как я понимаю).

Проблема:
данные физически присутствуют в файле (я проверил это просмотрев файл cache.dat в hexview), но достать их посредством sql-запроса (в SQL-менеджере) не получается :(

Предположение:
Есть два уровня удаления записей - логический (путем специальной пометки записи) и физический (путем действительного избавления от записей помеченных как "удаленные")

Вопрос:
1. Как "восстановить" запись помеченную как "удаленную"?

Переиндексация класса посредством do ##class(ClassName).%BuildIndices() не помогла.
...
Рейтинг: 0 / 0
Восстановление данных. Прямое вмешательство в cache.dat
    #35892827
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrew Kovalchukтрадиция, как я понимаю
Такой интерпретации кащейского хранения данных я еще не встречал...
Andrew Kovalchukданные физически присутствуют в файле (я проверил это просмотрев файл cache.dat в hexview)
Ясно.
Andrew KovalchukЕсть два уровня удаления записей ...
Не в Каше. Если прошла команда KILL - данные удалены, а другой команды и нет...
Andrew KovalchukПереиндексация класса посредством do ##class(ClassName).%BuildIndices() не помогла.
Значит данных в классе уже нет.

То, что вы нашли с помощью hexview это информация в блоке, помеченая как "свободная"... Но помечена она т.с. для самого Каше. Не для класса. В классе все - даных нет.
...
Рейтинг: 0 / 0
Восстановление данных. Прямое вмешательство в cache.dat
    #35892829
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя (теоретически) можно попробовать дежурналирование... Может про это подскажут те, кто им пользуется.
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
Восстановление данных. Прямое вмешательство в cache.dat
    #35892831
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может какие резервные копии БД есть?
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
Восстановление данных. Прямое вмешательство в cache.dat
    #35892963
Andrew Kovalchuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Резервные копии есть, но, видимо, удаление было произведено давно (гораздо дальше имеющихся бэкапов) и все версии содержат тот же набор данных. Хранить же резервные копии годичной давности нет смысла - слишком быстро течет информация да и размер у базы недетский.
Теперешняя проблема обнаружилась совершенно случайно.
Неужто нельзя информацию из свободного блока приписать к какому-то блоку данных?
...
Рейтинг: 0 / 0
Восстановление данных. Прямое вмешательство в cache.dat
    #35893017
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrew KovalchukНеужто нельзя информацию из свободного блока приписать к какому-то блоку данных?
Эт врядли! (с) к/ф Белое солнце пустыни
Но, как вариант, написать программку по "вычитыванию" этих данных из файла cache.dat (уже как из файла), а потом написать добавление этих данных снова в класс...
Но наш паталогоанатом уехал... А сам я такими делами никогда не занимался.

На будущее... Сами пишите алгоритмы "пометок" для удаления и последующей "паковки" ваших классов. Возможно это защитит вас от таких ситуаций...
...
Рейтинг: 0 / 0
Восстановление данных. Прямое вмешательство в cache.dat
    #35893558
zdi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
zdi
Гость
krvsa,
наш паталогоанатом уехал... А сам я такими делами никогда не занимался
Эт точно! (с) к/ф Белое солнце пустыни.
Доктор сказал - в морг, значит в морг. И не пробуйте!
...
Рейтинг: 0 / 0
Восстановление данных. Прямое вмешательство в cache.dat
    #35894109
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такая утилита ^SALVAGE. Ее можно получить в ISC, если у вас есть тех.поддержка. Она позволяет скопировать все блоки данных (в том числе, помеченные как свободные) в другую базу (БД2). Естественно, там появляется много ненужного мусора, поэтому следующий разумный шаг - найти требуемый(е) глобал(ы) в БД2, удалить из них все лишнее, или наоборот, вытащить нужное и (если результат порадует) вернуть в рабочую БД1.
Процесс творческий, требует уверенного знания структуры хранения таблиц в глобалах.
...
Рейтинг: 0 / 0
Восстановление данных. Прямое вмешательство в cache.dat
    #35894124
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovЕсть такая утилита ^SALVAGE. Ее можно получить в ISC, если у вас есть тех.поддержка.
Её дают бесплатно? Она кросверсионная? Или только под какую-то определенную версию Каше?
...
Рейтинг: 0 / 0
Восстановление данных. Прямое вмешательство в cache.dat
    #35894185
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дают , если вы на тех.поддержке.
Подробностей насчет кроссверсионности не знаю. В 2008.1 работает, 8Кб базы понимает ;) работает ли с длинными (до 3.6Мб) строками, не проверял. Но в SQL/Objects, кстати, длинные строки и не поддерживаются.
...
Рейтинг: 0 / 0
Восстановление данных. Прямое вмешательство в cache.dat
    #35894611
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По ходу, ее (^SALVAGE) можно скачать отсюда. Внутри zip-а и про версии есть.
...
Рейтинг: 0 / 0
Восстановление данных. Прямое вмешательство в cache.dat
    #35894975
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На работе завтра покачаю... А то мало ли чего.
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
Восстановление данных. Прямое вмешательство в cache.dat
    #35895028
dials
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrew Kovalchuk
Вопрос:
1. Как "восстановить" запись помеченную как "удаленную"?

Переиндексация класса посредством do ##class(ClassName).%BuildIndices() не помогла.

%PurgeIndices() перед переиндексацией выполняли?
...
Рейтинг: 0 / 0
Восстановление данных. Прямое вмешательство в cache.dat
    #35895431
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov , качнул, спасибо.
...
Рейтинг: 0 / 0
Восстановление данных. Прямое вмешательство в cache.dat
    #35896656
Andrew Kovalchuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dialsAndrew Kovalchuk
Вопрос:
1. Как "восстановить" запись помеченную как "удаленную"?

Переиндексация класса посредством do ##class(ClassName).%BuildIndices() не помогла.

%PurgeIndices() перед переиндексацией выполняли?

Не делал. Это обязательно перед построением новых индексов? По документации, вроде, нет.
Я не понимаю, чем зачистка старых индексов поможет "удаленным" записям?
...
Рейтинг: 0 / 0
Восстановление данных. Прямое вмешательство в cache.dat
    #35897624
Фотография ceshka_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrew KovalchukРезервные копии есть, но, видимо, удаление было произведено давно (гораздо дальше имеющихся бэкапов) и все версии содержат тот же набор данных. Хранить же резервные копии годичной давности нет смысла - слишком быстро течет информация да и размер у базы недетский.
Теперешняя проблема обнаружилась совершенно случайно.
Неужто нельзя информацию из свободного блока приписать к какому-то блоку данных?
как меня радуют люди, экономящие на бэкапах
при наличии оракловых баз в несколько терабайт и кучи их бэкапов бывает экономят по 10-15 гиг
лично мой совет - срок хранения - год. хотя б один из недели бэкап.

но это патетика, размер базы интересно какой?
...
Рейтинг: 0 / 0
Восстановление данных. Прямое вмешательство в cache.dat
    #35897640
dials
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrew KovalchukdialsAndrew Kovalchuk
Вопрос:
1. Как "восстановить" запись помеченную как "удаленную"?

Переиндексация класса посредством do ##class(ClassName).%BuildIndices() не помогла.

%PurgeIndices() перед переиндексацией выполняли?

Не делал. Это обязательно перед построением новых индексов? По документации, вроде, нет.
Я не понимаю, чем зачистка старых индексов поможет "удаленным" записям?

Как показывает практика, при разрушении индексов, перестроение индексов без операции "Purge" не всегда приводит к ожидаемому результату. К сожалению, об этом в документации не сказано ничего...
...
Рейтинг: 0 / 0
Восстановление данных. Прямое вмешательство в cache.dat
    #35900259
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrew KovalchukРезервные копии есть, но, видимо, удаление было произведено давно (гораздо дальше имеющихся бэкапов) и все версии содержат тот же набор данных.

Тут вопрос то какой - если вы делали бэкапи встроенными средствами, а не просто копированием cache.dat - то по идее свободных блоков там быть не должно.

А если они так все равно есть - возможно еще вариант что у Вас где то на уровне хранения нет отображения этих данных в SQL.

В этом случаем нужно смотреть глобалы
...
Рейтинг: 0 / 0
Восстановление данных. Прямое вмешательство в cache.dat
    #35961852
Andrew Kovalchuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PtnAndrew KovalchukРезервные копии есть, но, видимо, удаление было произведено давно (гораздо дальше имеющихся бэкапов) и все версии содержат тот же набор данных.

Тут вопрос то какой - если вы делали бэкапи встроенными средствами, а не просто копированием cache.dat - то по идее свободных блоков там быть не должно.

А если они так все равно есть - возможно еще вариант что у Вас где то на уровне хранения нет отображения этих данных в SQL.

В этом случаем нужно смотреть глобалы

Бэкапы делались простым копированием cache.dat

^SALVAGE после четырех часов работы (1,5 млн. элементов) написал в destination аж ноль узлов :(

В связи с обнаружением базы древней давности сабжевый вопрос следует переформулировать следующим образом:
Имеется две базы Каше (backup and actual). Каким образом возможно слияние данных хранящихся в этих базах?
Приветствуются посылы в сторону документации и примеры кода.
...
Рейтинг: 0 / 0
Восстановление данных. Прямое вмешательство в cache.dat
    #35962015
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrew KovalchukБэкапы делались простым копированием cache.dat
Файлы cache.dat копировались при работающем сервере или при остановленном?
...
Рейтинг: 0 / 0
Восстановление данных. Прямое вмешательство в cache.dat
    #35962463
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во первых нужно узнать ответь на вопрос ну я

Далее... встроенных средств, думаю, нет - задача больно редкая.

Монтируете обе базы [BBASE] - backup [ABASE] - actual

Получаете каким либо образом (или просто составляете) список всех глобалов из ABASE

Индексные (*I ) лучше исключить.

Для каждого глобала вызываете команду merge
Код: plaintext
1.
2.
3.
4.
5.
#define MA2B(%glob) merge ^["BBASE"]%glob=^["ABASE"]%glob

 $$$MA2B(User.TestD)
 $$$MA2B(User.Test2D)
 $$$MA2B(User.Test3D)

Потом перестраиваете индексы у всех хранимых классов.
...
Рейтинг: 0 / 0
Восстановление данных. Прямое вмешательство в cache.dat
    #35962602
Andrew Kovalchuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну яAndrew KovalchukБэкапы делались простым копированием cache.dat
Файлы cache.dat копировались при работающем сервере или при остановленном?
При остановленном. На запущенном сервере, насколько мне известно, работают штатные средства резервирования (но у нас они не используются).
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Восстановление данных. Прямое вмешательство в cache.dat
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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