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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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