Обслуживание базы данных SH4

Важно: перед выполнение любых операций с базой данных, необходимо делайть резервные копии!

Общая информация

SDB server manager (Sdbman.exe) - основное приложение для диагностики и обслуживания баз данных SH4.

Так как формат базы данных (*.SDB, *.SDL) зашифрован, других средств для работы с базами данных SH4 нет.

Основной функционал приложения Sdbman:

  • создание резервной копии базы данных
  • восстановление базы данных из резервной копии
  • выполнение запросов к базе (собственные процедуры, поддержки SQL-языка нет)
  • встроенные инструменты для диагностики и ремонта структуры базы данных
  • статистическая информация по работе сервера склада
  • информация о подключениях к серверу клиентов
  • управление ролями и правами пользователей
  • сервисные настройки для оптимизации быстродействия базы данных

Меню "Пользователи"

В данном меню находятся следующие пункты:

  • Список пользователей
  • Список ролей
  • Список соединений

Создание ролей и назначение прав подробно описано в руководстве пользователя по системе StoreHouse v4 ftp://ftp.ucs.ru/books/storehouse_v4_user_manual.pdf

В списке соединений можно посмотреть информацию по всем клиентам, подключенным на данный момент к серверу SH4.

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

  • Пользователь - пользователь SH4, вошедший в систему на клиентском рабочем месте
  • Компьютер - имя компьютера, на котором запущен клиент
  • Идентификатор - служебгный идентификатор соединения
  • Протокол - протокол, используемый клиентом для подключения к серверу
  • IP-адрес - IP-адрес клиентского компьютера (хоста)

Список соединений можно использовать для анализа сообщений системы типа "Превышен лимит подключений к серверу" - т.к. лицензионный ключ защиты содержит ограничение на кол-во возможных одновременных подключений клиентов к серверу склада, каждое подключение клиентского приложения, включая сервисные приложения (Sh4Utils, инвентаризация и т.д.), будет учитываться ограничением лицензии.

Меню "Обслуживание"

В данном меню находятся следующие пункты: 

  • "Резервное копирование" - операция ручного создания резервной копии базы данных 
  • "Размер файла БД..." - отображает статистику по рабочей базе данных и позволяет изменять размер базы данных

Размер базы данных указывается в страницах или в мегабайтах (1 страница = 4Кб или 1Мб = 256 страниц) - параметры взаимосвязаны, т.е. изменение одного влечет за собой изменение другого. 

При создании базы данных по умолчанию устанавливается размер в 35 000 страниц (приблизительно 137Мб) - как правило, базы данных такого размера хватает примерно на 2-3 года работы предприятия общественного питания.

Увеличивать размер базы рекоммендуется постепенно, т.е. добавляя к первоначальному размеру не более 30000-50000 страниц. Задавать максимальный размер количества страниц в базе сразу не рекомендуется, т.к. это может усложнить процедуры связанные с перемещением и обслуживанием файла БД такого размера.

Примечание: Система не позволит установить новый размер базы данных, который меньше текущего 

Важно: Максимальный размер базы данных StoreHouse v4 примерно 1,8Гб или 458752 страниц

В системе есть два похожих сообщения: "страничный кэш исчерпан" и "недостаточно страниц в базе данных", которые относятся к разным сущностям сервера склада. Иногда это приводит к путанице между понятиями "количество страниц в базе данных" и "страничный кеш" - в каждом  случаев необходимо выполнить соответсвующие настройки

  • "Диагностика" - диагностика и автоматическое восстановление структуры базы данных.

Если в процессе работы с базой данных возникают сообщения, ссылающиеся на "страницы", "индексы", "ключи", вероятнее всего есть структурные повреждения базы данных - в таком случае необходимо воспользоваться диагностикой и восстановить структуру базы данных.

Применение диагностики с последующими процедурами резервного копирования и восстановления из резервной копии, позволяют восстановить работоспособность более чем в 90% случаев при возникновении структурных ошибок в базе данных SH4.

Если резервная копия стандартными средствами не выполняется, вероятнее всего, база данных содержит серьезные структурные нарушения и продолжать работу в такой базе не рекомендуется. В таких случаях необходимо восстановить базу данных из созданной ранее резервной копии или обратиться в техническую поддержку

Меню "Прочее"

В данном меню находятся следующие пункты:  

  • "Ограничения на работу с отрицательными остатками ..." - возможность запретить расходование в минус расходными и/или прочими накладными

Примечание: Опция "Запрет на приходование при отрицательных остатках" влючена по умолчанию и не может быть отключена в стандарной версии склада

"Оптимизация вычисления себестоимости" - включение опции хранения себестоимости накладных в закрытом периоде

Как следует из названия опции, оптимизация работает для закрытого периода. Таким образом, данную опцию имеет смысл использовать только совместно с операцией закрытия перида в приложении Sh.exe, меню "Сервис"  "Закрытие периода":

Операцию закрытия периода желательно выполнять регулярно и как можно ближе к текущей дате, что обеспечит высокую производительность системы при построении списков документов, отчетов и т.д. Особенно заметно это будет на достаточно больших базах, информация в которых накапливалась несколько лет.

  • "Снять блокировки..." -  удаление блокировок документов, установленных всеми пользователями либо конкретным пользователем

"Доп. ограничения на открытый период..." - задание количества дней от текущей даты в течени которых возможно изменение документов в складе

Система будет автоматически закрывать документы для редактирования, которые введены ранее указанного кол-ва дней.

Обработка параметра:

  • для версий склада ниже 4.99.ххх: при указании значения 1 разрешается править документы со вчерашнего дня, при значении 2 - с позавчерашнего и т.д.
  • для версий склада 4.99.ххх и выше: при указании значения 1 разрешается править документы с сегодняшнего дня, при значении 2 - со вчерашнего и т.д.

"Статистика" - список всех объектов системы с возможностью просмотра детальной информации по каждому объекту

Статистика и информация по объектам системы может быть полезной в различных аспектах - обслуживании базы данных, локализация технических проблем в работе системы и т.д.

Например, можно посмотреть общую статистику по серверу SH4: 

  • дата и время последней успешной операции создания резервной копии базы данных (Last backup) - исходя из значения этого параметра, который хранится в самой базе, сервер выполняет автоматические оерации по созданию резервных копий.
  • сетевые протоколы, поддерживаемые сервером (Net protocols) 
  • размер используемого (выделенного) страничного кеша (Server cache allocated pages)
  • максимальный размер страничного кеша (Server cache max pages)
  • размер области базы данных, заполненной полезной информацией (Db commited pages) - по этому показателю можно делать вывод, насколько база уже заполнена и как скоро потребуется увеличение размера и/или операция удаления документов
  • максимально возможный размер базы данных в страницах и Мб (Db file version)
  • версия базы данных (Db file version)
  • размер лог-файла сервера (Server log file size)
  • размер файла журнала транзакций (Dblog file size)
  • размер файла базы данных (Dbfile size)
  • версия сервера (Server version)

"Выполнить запрос"  - сервисный инструмент для работы со встроенными или внешним процедурами

Для получения информации по встроенным процедурам сервера достаточно указать наименование процедуры в поле "Процедура" и выполнить запрос (с помощью вызова контекстного меню или с помощью соотв. иконки на  панели задач).

Для работы с внешними процедурами требуется указание в поле "Библиотека" полного пути к сервисной библиотеке (библиотека, как правило, предоставляться вместе с инструкцией по решению проблемы - пример такой библиотеки ShFix.dll ftp://ftp.ucs.ru/storehouse/sh4/shfix)

Параметры конфигурации сервера (SdbsConf)

SDB server configuration utility (SdbsConf.exe) - основное приложение для настройки параметров конфигурации сервера SH4.

Параметры конфигурации сервера подробно описаны в документе http://support.ucs.ru/ru/node/6942#header-6

В данном разделе рассмотрены особенности и рекомендации для некоторых параметров, связанных с сервисным обслуживанием:

  • Backup directory (Каталог резервных копий) - полный путь к директории, в которой будут храниться резервные копии баз данных. Рекомендуется для каждого сервера создавать отдельную директорию для хранения резервных копий , что-бы в будущем было проще ориентироваться в принадлежности резервных копий тому или иному серверу.
  • Backup options (Параметры резервного копирования) - включение/отключение автоматического режима резервного копирования БД и указание параметров резервного копирования.

Важно: Рекомендуется всегда включать режим автоматического резервного копирования с опциями "Backup time" и "Stop server on error" - отсутствие актуальных резервных копий самая частая причина невозможности оперативно восстановить работу системы в случае поломки БД!

Параметры резервного копирования:

  • Backup time (Время резервирования) - выполнять резервное копирование в конкретное время суток, рекомендуемый режим
  • On database loading (При запуске сервера) - выполнять резервное копирование во время запуска сервера, ненадежный режим
  • On sever shutdown (При остановке сервера) - выполнять резервное копирование во время остановки сервера, ненадежный режим (например, при выключении ПК  сервер сначала выполнит резервное копирование и только затем завершит работу)
  • Stop server on error (Остановка сервера при ошибке) - при включении опции сервер будет остановлен после неудачной попытки резервного копирования  и клиенты получат сообщении о невозможности продолжать работу,рекомендуемая опция. 

С выключенным параметром "Stop server on error" сервер будет продолжать работу даже в случае возникновения каких-либо проблем в процессе создания резервной копии - это может привести к тому, что Заказчик лишится возможности быстрого решения возможных проблем, в том числе связанных со стуктурным нарушением целостности базы данных.

В случае несвоевременной реакции на возникшие проблемы в базе данных, существует несколько вариантов решения, которые не всегда могут устроить Заказчика:

  • восстановить базу данных из ранее созданной резерной копии, что может привести к утере части акутальных данных
  • обратиться в службу поддержки компании ЮСИЭС для восстановления базы данных - операция в большинстве случае дает положительный результат (в некоторых случаях с незначительной потерей актуальных данных), но требует определенного времени на выполнение работ, в течении которого работа Заказчика в системе SH4 должна быть приостановлена

Дата последней успешной операции резервного копирования хранится в базе данных - эта дата используется сервером для планирования операций автоматического резервного копирования. Если при попытке принудительно выполнить автоматическое резервное копирование (например, с помощью перезапуска сервера) резервная копия не создается, это может говорить о том, что сервер уже выполнял операцию в пределах периода, заданного в параметрах резервного копирования (проверить дату и время последней созданной резервной копии можно с помощью приложения Sdbman.exe в меню "Прочее" ⇒ "Статистика".). Вручную резервное копирование можно выполнить в любой момент. Если же требуется создание именно автоматической резервной копии (например, в случае восстановления пользователя и пароля администратора базы данных), необходимо временно изменить системную дату компьютера, чтобы согласно заданным параметрам операция выполнилась автоматически - после успешного завершения операции дату необходимо установить в текущее значение.

  • Automatic recovery (Автоматическое восстановление) - устанавливает режим автоматического восстановления БД при сбоях (например, при нештатном отключении питания), восстановление происходит при запуске сервера и использует для восстановления информацию из журнала транзакций (Database Log)

Автоматическое восстановление базы данных

Технология предназначена для восстановления баз данных StoreHouse из резервных копий. Операция восстановления происходит полностью в автоматическом режиме.

Конфигурация с автоматическим восстановлением БД может использоваться для сетевых ресторанов, где есть необходимость развертывания локальных (удаленных) БД на едином (центральном) сервере.

Важно: Для возможности автоматического восстановления БД сервер StoreHouse должен быть запущен в качестве службы!

Состав комплекса

В состав комплекса входят следующие файлы:

  • Shrinit.exe - утилита для инициализации параметров
  • Shrinit.ini - конфигурауионных файл для утилиты shrinit.exe
  • Shr.exe - утитилита для выполнения восстановления БД из резервной копии
  • SDBSERV.INI - пример конфигурационного файла для запуска Shr.exe

Дистрибутив можно загрузить с FTP-севрера ftp://ftp.ucs.ru/storehouse/sh4/Shr

Настройка и запуск

Перед запуском Shr.exe необходимо выполнить единоразовую процедуру инициализации параметров с помощью утилиты Shrinit.exe

Shrinit.exe

Утилита Shrinit.exe используется для инициализации (сохранения) параметров - эта операция выполняется единоразово, затем утилиту Shrinit.exe и конфигурационный файл Shrinit.ini можно удалить.

Содержимое конфигурационного файла Shrinit.ini:

[NTUSER]       - необязательные параметры для персонализации пользователя Windows: Shr.exe необходимы права на запись к реестру, на остановку и запуск сервисов
Name=Администратор
Password=

[SHUSER]       - обязательные параметры: имя и пароль администратора, устанавливаемые для создаваемых при восстановлении баз данных
Name=Admin
Password=

Важно: После запуска утилиты Shrinit.exe все параметры, заданные в Shrinit.ini, сохраняются в реестре в зашифрованном виде - переменная shrdta в разделе HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\UCS\SH (x64) или HKEY_LOCAL_MACHINE\SOFTWARE\UCS\SH (x86)

Shr.exe

Утилита Shr.exe выполняет восстановление базы данных из резервной копии.

Формат запуска утилиты - командная строка вида:

Shr.exe<пробел><имя сервера SDBServ>

Примечание: Имя сервера, передаваемое в командной строке, должно соотв. имени сервера (Server name), заданное в SdbsConf.exe

Например, для восстановление базы для сервера SDBSERV запускаем с командной строки (или bat-файла) Shr.exe SDBSERV

Все параметры утилита Shr.exe считывает из INI-файла - для каждого сервера должен быть создан свой конфигурационный файл, имя которого совпадает с именем сервера.

Например, для сервера с именем SDBSERV должен быть создан и настроен конфигурационный файл SDBSERV.INI

Важно: Для возможности автоматического восстановления БД сервер StoreHouse должен быть запущен в качестве службы!

Содержимое INI-файла:

[Options] 

SrvNetName= - сетевое имя сервера, используемое для соединения с сервером. По умолчанию совпадает с именем сервера, формат зависит от типа подключения

BkpPath= - маска, по которой ищутся файлы резервных копий, берется первый найденный попавшийся. Обязательный параметр

LibName= - полный путь к библиотеке Sh_crtdb.dll. Обязательный параметр

FilePath= - каталог, в котором создаются файлы восстановленной БД. Обязательный параметр

MaxFileSize=0 - макс. размер файла БД в мегабайтах: 0 - размер не ограничен (по умолчанию)

CreateLog=0 - режим логирования: "0" - выводить на экран (по умолчанию), остальные непустые значения - сохранять в файл

DeleteFiles=0 - режим удаления файлов устаревшей БД и исходного бекап-файла при успешном завершении операции: "0" - не удалять (по умолчанию), остальные непустые значения - удалять

Рассмотрим подробно каждый параметр:

- SrvNetName - сетевое имя сервера или строка подключения к серверу. Формат зависит от типа подключения - при использовании локального подключения или подключения по протоколу NetBIOS, указывается имя сервера (например, SDBSERV), тогда как при подключении по протоколу TCP/IP необходимо указывать строку в специальном формате:

  • <IP-адрес сервера>:pT - строка подключения без использования таймаута и порта подключения, например SrvNetName="127.0.0.1:pT"
  • <IP-адрес сервера>:pTt<таймаут подключения в мс> - строка подключения с использованием таймаута и без использования порта подключения, например SrvNetName="127.0.0.1:pTt20000"
  • <IP-адрес сервера>:pTt<таймаут подключения в мс>a<порт подключения> - строка подключения с использованием таймаута и порта подключения, например SrvNetName="127.0.0.1:pTt20000a10124"

Важно: Для подключения к серверу склада, запущенного как служба, необходимо использовать подключение только по протоколу TCP/IP. При использовании протокола TCP/IP всегда  указывайте параметр таймаута для избежания ситуации, когда утилита Shr.exe будет терять связь с сервером после его перезапуска.

- BkpPath - маска для поиска резервных копий в определенном каталоге.  В качестве маски может быть задан как шаблон (например, C:\UCS\SDBSrv\Backup\*.bkp), так и путь к конкретному файлу (например, C:\UCS\SDBSrv\Backup\sh4_backup.bkp). В случае указания шаблона утилита будет использовать для восстановления первый найденный файл резервной копии, остальные будут игнорироваться - в такой конфигурации рекомендуется удалять резерные копии после их восстановления (DeleteFiles=1)

- LibName - полный путь к библиотеке SH_CRTDB.DLL из рабочего каталога склада

- FilePath - директория, в которой будет создаваться база данных и файл журнала транзакций после успешного завершения автоматического восстановления

- MaxFileSize - максимальный размер файла восстановливаемой базы данных. Следует заметить, что при значении MaxFileSize=0 будет создаваться база данных размером, приблизительно в три раза превышающим размер самого архива. Рекомендуется использовать значение параметра MaxFileSize=0, т.к. в такой конфигурации всегда будет установлен необходимый и достаточный размер базы данных

CreateLog - сервисный параметр. Вывод сообщения на экран (CreateLog=0) может потребоваться в случае решения возникших проблем при восстановлении, в рабочем режим достаточно журналирования операций в лог-файл (CreateLog=1)

DeleteFiles - режим удаления  "старой" базы данных и исходного файл резервной копии. Варианты использования зависят от требуемой конфигуации и, как правило, согласовываются с Заказчиком

Важно: Для запуска утилиты Shr.exe требуются клиентские компоненты SH4 - DmCtrl.bpl, DoMan.dll, SdbCli.dll, RTL60.BPL и VCL60.BPL. Можно скопировать эти компоненты в каталог c Shr.exe из рабочего каталога SH4 либо скопировать утилиту Shr.exe в рабочий каталог SH4

Пример

  • На каждой удаленной точке сервер StoreHouse выполняет автоматическое создание резервной копии базы данных - параметры резервного копирования настраиваются с помощью SdbsConf.exe, рекомендуется настроить создание резервной копии в определенное время (см. далее)
  • Через некоторое время после создания резервной копии (5-10 минут) файл архива передается на центральный сервер (варианты передачи данных в данной статье не рассматриваются)
  • На сервере архивный файл копируется в директорию, которая указана в настройках INI-файла соотв. складского сервера
  • Утилита Shr.exe выполняет автоматическое восстановление резерных копий (запуск утилиты можно настроить через планировщик Windows)

В центральном офисе сервера могут находится на одном компьютере, возможное кол-во одновременно запущенных серверов зависит от размеров ОЗУ (например, для запуска 16-ти серверов достаточно 2Гб оперативной памяти).

Примечание: Если длина имени сервера превышает 15 символов, подключение НЕ ПРОИСХОДИТ. Например, подключение к серверу KINOMAX_CHPOBEDA.INI (или KINOMAX_VOLGOGRAD.INI) не удалось, тогда как к KINOMAX_VORONEG.INI соединение устанавливается без проблем.