Это старая версия документа.


Методика бинарного 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>

Проверяем корректность выгрузки файлов (содержиемое).

  • Создаем файл со списком всех таблиц исходной базы (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
  • Дампим данные (требует времени):
 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 $BQDB
 <редактор> 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 16384
  • База готова для загрузки.

Загрузка

  • Если требуется, редактируем файл bisquit.df, например, для изменения размещения таблиц и индексов по областям
  • Переходим в каталог с дампом, запускаем OpenEdge Data Dictionary и загружаем 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

  1. > Maintaining and Monitoring Your Database
    1. > Dumping and Loading

3. OpenEdge Deployment: Managing ABL Applications

  1. > Managing R-code Libraries

4. Компиляция БИСквит:

  1. документация БИСквит http://support.bis.ru/docs/
  2. документация к патчам БИСквит