Это старая версия документа.
Методика бинарного 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
bq41d [-1] -p _admin.p Data Dictionary Admin -> Dump Data and Definitions -> Data Definitions (.df file)... <bisquit.df> User Table Contents... <_user.d> Sequences Current Values... <_seqvals.d>
Проверяем корректность выгрузки файлов (содержиемое).
3. Создаем файл со списком всех таблиц исходной базы (tabs.txt),
по выгруженному bisquit.df:
sed -ne 's:^ADD TABLE "\(.*\)":\1:p' bisquit.df | tee tabs.txt
или с помощью tabanalys исходной базы: bq41d tabanalys | grep '^PUB.' | cut -d ' ' -f 1 | tee tabs.txt
Проверяем и фиксируем кол-во таблиц: wc -l tabs.txt
4. Дампим данные (требует времени):
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
5. Приложите к дампу также описание структуры областей базы: bisquit.st
Создание новой базы: ~~~~~~~~~~~~~~~~~~~~ 1. Создаем скрипт для новой базы, устанавливаем в нем переменную BQDB
на каталог для новой базы. Переходим в этот каталог, создаем/редактируем файл описания структуры новой базы (возможно, с новыми областями). Создаем файл описания директорий временных файлов сортировки для последующей индексации базы.
cd $BQDB vi bisquit.st vi bisquit.srt (пример, по 2ГБ в tmp: 2048000 /tmp)
2. (Опционально, по умолчанию - пропустить). При необходимости можно
отформатировать структуру новой базы заранее:
bq41d struct create -blocksize 8192 или bq41d exec prostrct create \$BQDB -blocksize 8192
После этого меняем отностительные пути экстентов структуры на абсолютные:
bq41d struct list bq41d struct repair
3. Копируем заготовку из дистрибутива OpenEdge.
Меняем ей кодировку на ibm866:
bq41d exec procopy '$DLC/prolang/rus/empty8 $BQDB' bq41d convchar convert ibm866
4. (Опционально). При необходимости включить поддержку больших файлов:
bq41d enablelargefiles
5. (Производительность)
bq41d trunc -bi 16384 -biblocksize 16384
Загрузка ~~~~~~~~ 1. Если требуется, редактируем файл bisquit.df, например, для изменения
разбиения по областям. Переходим в каталог с дампом и грузим bisquit.df _seqvals.d и _user.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> Sequences Current Values... <_seqvals.d>
2. При необходимости, переносим таблицы в другие области (с индексами
или без):
bq41d tablemove table-name table-area [index-area]
или
bq41d -1 -p genscript -param table.cfg,move.sh bq41d exec sh move.sh
3. В этом месте лучше сделать бэкап созданной «пустой» базы с загруженной
структурой, чтобы в случае неудачи начинать не с п.1, а из бэкапа (база еще маленькая и восстановится быстро)
4. Грузим данные (Сразу с перестройкой индексов или без. Рекомендуется
перестройку индексов производить отдельно):
cd <dump dir> for F in *.bd*; do bq41d load $F [build indexes] || break; done | tee load.log
Если какую-либо таблицу не надо загружать (напр. history), то следует предварительно удалить или переименовать ее суффикс (.bd) Проверяем логи (load.log). Искать "err" или "fail". Проверяем кол-во сообщений об успешных загрузках (должно соответствовать кол-ву таблиц):
grep "(6256)" load.log | wc -l
5. Если индексы не создавались при загрузке, перестраиваем их (файл
bisquit.srt должен быть создан заранее)
bq41d idxbuild all -TB 31 -TM 32 [-B 16536] -silent
вариант для 10.2B: bq41d idxbuild all -mergethreads 2 -threadnum 2 -datascanthreads 6 -B 1024 -TF 50 -TMB 64 -TB 64 -TM 32 -rusage -silent
6. Компилируем БИСквит при необходимости.
Убираем из PROPATH все старые r-ки.
bq41d -U bis -P ***
run promake.p указываем исходники ../src/* каталог для r
После компиляции рекомендуется собрать необходимые библиотеки. Если bq41d.pl получается больше 2 ГБ, ее можно сделать из двух частей. Указываем нужные библиотеки в PROPATH скриптов. Библиотеки следует располагать в каталоге $BQ/lib.
Документация: ~~~~~~~~~~~~~ 1. Методика dump-load (актуальная версия:
http://support.bis.ru/info/misc/index.php?id=dumpload
2. OpenEdge Data Management: Database Administration
- > Maintaining and Monitoring Your Database
- > Dumping and Loading
3. OpenEdge Deployment: Managing ABL Applications
- > Managing R-code Libraries
4. Компиляция БИСквит:
- документация БИСквит http://support.bis.ru/docs/
- документация к патчам БИСквит