Это старая версия документа.
Содержание
Методика бинарного dump/load базы БИСквит
Примечание
Если дамп и последующая загрузка производятся на разных серверах и/или инсталляциях OpenEdge, то перед операциями необходимо проверить содержимое файлов $DLC/startup.pf
для обоих инстансов OpenEdge (на исходном и целевом хосте) на предмет корректности и совпадения параметров локализации. Либо следует указывать эти параметры в выполняемых командах в явном виде.
Стандартные параметры локализации для БИСквита:
-cpinternal ibm866 -cpstream ibm866 -cpcoll Russian -cpcase Basic -d dmy -numsep 44 -numdec 46
Дамп
- Создаем директорию для файлов дампа и переходим в нее
cd <dump dir>
- Запускаем OpenEdge Data Dictionary и выгружаем (текстом) описание
bisquit.df
, таблицу пользователей_user.d
, последовательности_seqvals.d
, записи аутентификации_sec-authentication-domain.d
и_sec-authentication-system.d
.
bq41d [-1] -p _admin.p Data Dictionary Admin -> Dump Data and Definitions -> Data Definitions (.df file)... <bisquit.df> User Table Contents... <_user.d> Security Authentication Records... <_sec-authentication-*.d> Sequences Current Values... <_seqvals.d>
Проверяем корректность выгрузки файлов (содержиемое).
- Создаем файл со списком всех таблиц исходной базы (
tabs.txt
) по выгруженномуbisquit.df
:
sed -ne 's:^ADD TABLE "\(.*\)".*$:\1:p' bisquit.df | tee tabs.txt
Проверяем и фиксируем количество таблиц:
wc -l tabs.txt
- Дампим данные (требует времени):
while read TAB; do bq41d dump $TAB . || break done <tabs.txt | tee dump.log
Если какую-либо таблицу не надо дампить (например, history
), то следует предварительно удалить ее из файла tabs.txt
.
После дампа проверяем логи (dump.log
).
Проверяем количество сообщений об успешных дампах (должно соответствовать количеству таблиц):
grep "(6254)" dump.log | wc -l
- Дамп готов. Приложите к нему также описание структуры областей базы:
bisquit.st
Создание новой базы:
- Создаем скрипт для новой базы, устанавливаем в нем переменную
BQDB
на каталог для новой базы. Переходим в этот каталог, создаем/редактируем файл описания структуры новой базы (возможно, с новыми областями). Создаем файл описания директорий временных файлов сортировки для последующей индексации базы.
cd <путь до каталога с базой> <редактор> bisquit.st <редактор> bisquit.srt (пример, по 2ГБ в tmp: 2048000 /tmp)
- Копируем заготовку базы из дистрибутива OpenEdge. Меняем ей кодировку на
ibm866
:
bq41d exec procopy '$DLC/prolang/rus/empty8 $BQDB' bq41d convchar convert ibm866
- (Опционально). При необходимости включить поддержку больших файлов:
bq41d enablelargefiles
- (Производительность) Рекомендуется увеличить размер блока и кластера bi файла для увеличения производительности на запись.
bq41d trunc -bi 16384 -biblocksize 16
- База готова для загрузки.
Загрузка
- (Опционально). Если требуется, редактируем файл
bisquit.df
, например, для изменения размещения таблиц и индексов по областям
- Переходим в каталог с дампом, запускаем OpenEdge Data Dictionary и загружаем описание
bisquit.df
, последовательности_seqvals.d
, таблицу пользователей_user.d
, записи аутентификации_sec-authentication-domain.d
и_sec-authentication-system.d
. Записи аутентификации необходимы в случае использования функционала 0222364 (SSO. Реализация входа по логину UNIX) начиная с патча d102. Если данный функционал не используется - записи можно не грузить или соответствующие .d-файлы могут их не содержать.
cd <dump dir> bq41d [-1] -p _admin.p Data Dictionary Admin -> Load Data and Definitions -> Data Definitions (.df file)... <bisquit.df> User Table Contents... <_user.d> Security Domains... <_sec-authentication-*.d> Sequences Current Values... <_seqvals.d>
- (Опционально). При необходимости, переносим таблицы в другие области (с индексами или без), если это не было сделано редактированием
bisquit.df
bq41d tablemove table-name table-area [index-area]
Или используем процедуру genscript.p
для генерации скрипта move.sh
по описанию table.cfg
. Актуальные версии genscript.p
и table.cfg
поставляются в составе исходников выпускаемых патчей. Перед запуском созданного скрипта move.sh
проверьте его содержание и отредактируйте при необходимости.
bq41d -1 -p genscript.p -param table.cfg,move.sh bq41d cmd sh move.sh
- В этом месте лучше сделать бэкап созданной «пустой» базы с загруженной структурой, чтобы в случае неудачи начинать не с создания базы, а из бэкапа (база еще маленькая и восстановится быстро).
- Грузим данные (может требовать значительного времени!):
cd <dump dir> for F in *.bd*; do bq41d load $F || break; done | tee load.log
Если какую-либо таблицу не надо загружать (например, history
), то следует
предварительно ее удалить или переименовать ее суффикс (.bd
)
- Проверяем логи (
load.log
). Искать «err
» или «fail
». Проверяем количество сообщений об успешных загрузках (должно соответствовать количеству загружаемых таблиц):
grep "(6256)" load.log | wc -l
- Строим индексы (файл
bisquit.srt
должен быть создан заранее). Эта операция самая ресурсозатратная, во многих случаях имеет смысл запускать ее в пакетном режиме в нерабочее время (для этого удобно использовать юниксовую командуat
).
bq41d idxbuild all -mergethreads 2 -threadnum 2 -datascanthreads 6 -B 1024 -TF 50 -TMB 64 -TB 64 -TM 32 -rusage -silent
- Компилируем БИСквит при необходимости с помощью promake, например.
Убираем из PROPATH все старые r-ки. Заходим в src
и запускаем:
bq41d -U bis -P *** run promake.p указываем исходники: <путь>/src/* указываем каталог для r
- После компиляции рекомендуется собрать необходимые библиотеки. Если
bq41d.pl
получается больше 2 ГБ, ее можно сделать из двух частей. Указываем нужные библиотеки вPROPATH
скриптов. Библиотеки следует располагать в каталоге$BQ/lib
.
Документация:
- OpenEdge Data Management: Database Administration
→ Maintaining and Monitoring Your Database
→ → Maintaining Database Structure
→ → → Dumping and Loading
→ → → Maintaining indexes and tables
- OpenEdge Data Management: Database Administration
→ Maintaining and Monitoring Your Database
→ → Managing Performance
→ → → Index use
→ → → → Rebuilding indexes
- OpenEdge Deployment: Managing ABL Applications
→ Managing R-code Libraries
- Компиляция:
- Документация БИСквит http://support.bis.ru/prod/bq/core/docs/
- Документация к патчам БИСквит