gifts2017

LockDB - утилита для обеспечения OnLine копирования информационной базы данных "1С:Предприятие 7.7".

Опубликовал Владимир (hogik) в раздел Администрирование - Системное

Утилита совместима только с разработками:
DBEng32 (8.0.0.9, Share) http://infostart.ru/public/16268/
DBEng32 (6.0.4.2, Advantage 8.1/9.1) http://infostart.ru/public/15211/
DBEng32 (5.1.3.2, CodeBase 6.5) http://infostart.ru/public/14664/
Начиная с указанных версий и выше.

Утилита позволяет выполнить приостановку модификаций информационной базы данных (ИБД) "1С:Предприятие 7.7" со стороны сессий 1С и выполнить "транзактивную" копию ИБД сторонним средством копирования. Для "DBEng32 Share" можно выполнять копирование на уровне обычных файлов операционной системы. Для "DBEng32 Advantage/CodeBase" следует использовать средства копирования поставляемые с данными СУБД. Т.к. предлагаемые, разработчиками этих СУБД, средства копирования работают крайне медленно, то планируется разработка "adsbackup" ориентированная на копирование только ИБД "1С:Предприятие 7.7" в среде СУБД "Advantage 8.1/9.1".

Вызов утилиты осуществляется командной строкой:

LockDB  PathDB  Strategy  Sleep  Command  Parameters

, где:

PathDB - полный путь к каталогу ИБД.

Strategy - стратегия блокировки ИБД. Допустимы следующие значения: 0, 1, 2.

0 - используется только для "DBEng32 Advantage/CodeBase".

Т.к. в этих разработках все транзакции выполняются строго последовательно, то при данной стратегии делается опрос "семафора" транзакций на общих основаниях транзакций сессий 1С. При доступности "семафора" выполняется его блокировка. Таким образом новые транзакции будут ожидать завершения копирования ИБД.

1 или 2 - используется только для "DBEng32 Share".

Т.к. в этой разработке сохранен "родной" алгоритм блокировки транзакций, то возможны выполнения нескольких транзакций одновременно из разных сессий 1С. Это позволяет управлять копированием ИБД с меньшим временем приостановки работы пользователей. В первой стратегии утилита LockDB постоянно опрашивает наличие активных транзакций. И если активных транзакций не существует, то сессиям 1С запрещается начинать новые транзакции и запускается копирование ИБД. После выполнения копирования - запрет снимается. Во второй стратегии утилита LockDB запрещает начинать новые транзакции, отслеживает завершение текущих транзакций, запускает копирование ИБД. А по завершению копирования снимает запрет на начало транзакций для сессий 1С.

Sleep - количество миллисекунд между опросами блокировок транзакций со стороны утилиты LockDB. Рекомендуется устанавливать значение - 1000 (одна секунда) и более.

Command - имя любого исполнительного файла являющимся средством копирования ИБД. Допускается текст в апострофах. Например, при использовании "DBEng32 Share" этот текст может быть следующего вида:

"XCOPY  c:\1c_base\*.dbf  d:\save\*.*"

Parameters - передаёт параметры для Command (реализовано в версии 1.0.0.2 и выше). Например, при использовании "DBEng32 Share" строка вызова утилиты может быть следующего вида:

LockDB  c:\1c_base  2  1500  XCOPY  c:\1c_base\*.dbf  d:\save\*.* 

Файл "LockDB.exe" может располагаться в любом каталоге. При использовании "DBEng32 Share" необходимо в каталог ИБД поместить файл "1SxTTS.lck" с любым содержанием (можно нулевой длины). Данный файл используется для управления синхронизацией выполнения транзакций сессиями 1С и запуском копирования утилитой LockDB. Кроме этого, наличие данного файла в каталоге ИБД, служит признаком активизации самого инструмента взаимодействия сессии 1С и утилиты LockDB. Если поместить данный файл при наличии уже активных сессий 1С, то они "не узнают" об необходимости согласовывать алгоритмы блокировки транзакций с утилитой LockDB и копии ИБД будут выполняться не "транзактивно" по отношению к этим сессиям. Иными словами - сессия 1С проверяет наличие данного файла один раз в момент собственного запуска и настраивается на взаимодействие с утилитой LockDB. Такой прием позволяет не включать лишние алгоритмы в работу "DBEng32 Share" при отсутствии необходимости выполнять OnLine копирования ИБД. При использовании "DBEng32 Advantage/CodeBase" файл "1SxTTS.lck" создаётся автоматически в момент запуска первой сессии 1С.

Утилита LockDB возвращает собственный код завершения, если возникло аварийное завершение в самой утилите (не нулевое значение). А после запуска и окончания средств копирования возвращает код завершения этих средств.

P.S.

1) Утилита LockDB. в ходе своей работы, может выдавать несколько сообщений на, вроде, "Английском" языке. Замечания по этой "проблеме" принимаются и приветствуются.

2) Думаю, что термин "транзактивная копия" не является общепринятым. Но, очень давно, я придумал именно такой термин. Возможно, что сейчас ЭТО называется другим термином.

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
LockDB_1002.zip
.zip 20,40Kb
05.07.11
20
.zip 20,40Kb 20 Бесплатно

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Альтаир (Altair777) 02.07.11 09:38
и как - работает? :)
после восстановления базы из созданного таким образом архива проблем не было?
2. Владимир (hogik) 02.07.11 17:18
(1)
Странный вопрос Вы задаёте. ;-)
В "1С 7.7" единственный способ создать "транзактивную" копию - это остановить выполнение транзакций. Т.к. все обновления делаются в транзакции, даже если проблемный программист не заказывает этого явно. Утилита LockDB это и делает. Останавливает... ;-)
3. Andrej Kuzmuk (skelelaz) 20.03.14 00:29
Очень хорошая вещь, а то в своих бэкапах я не уверен на 100%. В ночных уверен, а вот в дневных - с вероятностью.
4. Роман * (Black Cat) 20.05.16 16:31
А можно еще раз для тех кто в танке: эта утилита будет работать на стандартной dbf базе ? Или что-то еще нужно для ее работы ?
5. Владимир (hogik) 20.05.16 19:53
(4)
Или что-то еще нужно для ее работы ?

Нужно: http://infostart.ru/public/16268/
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа