YarrowSoft

Архив : [cache_ru] Откат по журналу ^JOURNAL ^JRNUTIL : группа пользователей постреляционной СУБД Cache


[Предыдущее - Re: [cache_ru] OBJ кода преобразовать в исходный код INT.] [Следующее - [cache_ru] КАк Записать информацию с тестового фойлика ?]


Письмо #5319

Тема: [cache_ru] Откат по журналу ^JOURNAL ^JRNUTIL
Начало этой темы: [cache_ru] Откат по журналу ^JOURNAL ^JRNUTIL
Это ответ на: нет
Ответ на это письмо: Re: [cache_ru] Откат по журналу ^JOURNAL ^JRNUTIL
От: kolesov_a Дата: 02 Ноября 2006 11:39

Тут вчера произошел неописуемый случай.
в 16-30(!) случайно произошел kill ^МОВД
где МОВД - МНОГО ОЧЕНЬ ВАЖНЫХ данных.

В журнале я этот килл нашел довольно быстро. А вот исправить ситуацию
быстро не смог (не был подготовлен, да и опыта мало в этом деле). В
общем, пока придумал, как исправлять, прикладники эти данные как-то
собрали... (выручило то, что на нормализацию БД нормальные программеры
наклали). А у меня получилась тренировка.

Появилось несколько вопросов:

1. Как я понял, при использовании ^JOURNAL, большое значение имеет
размер файла журнала. У меня был установлен максимум 1024 МВ и в день
получалось максимум два файла журнала (это пару раз в месяц). Обычный
размер - около 200 МВ.

ВОПРОС: Какой максимальный размер имеет смысл ставить? Сейчас я
поставил 50 М, но сомневаюсь, как система прореагирует на 20-ть и
более файлов журналов в сутки?

2. Очень приятная (с виду) утилита ^JRNUTIL. Но почему-то работает
странно:

        w !,$$OPENJRN^JRNUTIL("/usr/cachesys/mgr/journal/20061101.001")
        w !,$$USEJRN^JRNUTIL("/usr/cachesys/mgr/journal/20061101.001")
        w !,$$GETREC^JRNUTIL(180546768,.a)
        w !,$$CLOSEJRN^JRNUTIL("/usr/cachesys/mgr/journal/20061101.001")

Видим, что вроде все ок, но в "a" оказывается не совсем то, что
обещали:

w
a(1,1)="10338/180546728/180546804:K:5:^["^^/usr/cachesys/наша_область/"]МОВД"
a(1,1,3)="60570,58494"

Вроде понятно, что а(1,1,2) быть и не должно - кильнули же.
А вот где так нужные данные из а(1,1,1)?????

;              JRNODE(1,1)= pid,remsysid/prev/next:type:collation:glo ;LFT379 added collation
;                 pid  is the process id on the remote system
;                 remsysid is the internal unique id of the remote
;                      system
;                 prev/next are previous/next adjacent record addrs
;                 type is "S", "K", "k", "ZK", "B", "C", "NS, "NK",
;                      "s" (for Set $BIT), "Ns" (for network Set $BIT), ;RAM990
;                      or "ZNK" designating the type of the record.
;                 glo is the complete global reference name.
;                         
;              JRNODE(1,1,1) contains the old value if the global had
;              a previous value and this record is for a SET or KILL.
;              In the case of Set $BIT, the old value is in the form
;              bitpos^bitval, where bitpos is the 1-based integer bit
;              position of the bit and bitval is either 0 or 1.
;
;              JRNODE(1,1,2) contains the new value if type is "S"
;                  (for SET) or "s" (for Set $BIT)         ;RAM990
;              In the case of Set $BIT, the new value is in the form
;              bitpos^bitval, where bitpos is the 1-based integer bit
;              position of the bit and bitval is either 0 or 1.
;
;              JRNODE(1,1,3) contains the timestamp in $H format

3. Возникла версия: удалить из журнала запись о килле и восстановить
данные по журналу. Тоже не проходит:

        w !,$$OPENJRN^JRNUTIL("/usr/cachesys/mgr/journal/20061101.001")
        w !,$$USEJRN^JRNUTIL("/usr/cachesys/mgr/journal/20061101.001")
        w !,!,$$DELREC^JRNUTIL(180546768)
        w !,$$CLOSEJRN^JRNUTIL("/usr/cachesys/mgr/journal/20061101.001")

Получаем:

1
1
-15,Unsuccessful operation
1

С правами на файл вроде все нормально - rw-rw-rw-. C чоуном тоже.
Похоже, не получается отработать у $zu(78,19,ADDR). Но почему -
непонятно. М.б. есть версии?

Журнал перед всеми операциями был переключен. Пробовал и отключать
журналирование вообще на время операции.

Спасибо за внимание.


--

Александр Колесов
ОАО "Владивостокский морской торговый порт"

mailto:E-Mail




--


[2000|2001|2002|2003|2004|2005|2006|2007|2008] [Январь|Февраль|Март|Апрель|Май|Июнь]
[01|02|03|04|05|06]

Error. Page cannot be displayed. Please contact your service provider for more details. (14)