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


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

Проверяем и фиксируем кол-во таблиц:

 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>
  • (Опционально). При необходимости, переносим таблицы в другие области (с индексами или без), если это не было сделано редактированием bisquit.df
 bq41d tablemove table-name table-area [index-area]

или с помощью процедуры genscript по описанию table.cfg

 bq41d -1 -p genscript -param table.cfg,move.sh
 bq41d exec 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 должен быть создан заранее)
 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
  • Компилируем БИСквит при необходимости.

Убираем из PROPATH все старые r-ки. Например, заходим в src и запускаем, например:

 bq41d -U bis -P ***
    run promake.p
    
    указываем исходники: .../src/*
    указываем каталог для r
  • После компиляции рекомендуется собрать необходимые библиотеки. Если bq41d.pl получается больше 2 ГБ, ее можно сделать из двух частей. Указываем нужные библиотеки в PROPATH скриптов. Библиотеки следует располагать в каталоге $BQ/lib.

Документация:

  1. OpenEdge Data Management: Database Administration
    → Maintaining and Monitoring Your Database
    → → Maintaining Database Structure
    → → → Dumping and Loading
    → → → Maintaining indexes and tables

  2. OpenEdge Data Management: Database Administration
    → Maintaining and Monitoring Your Database
    → → Managing Performance
    → → → Index use
    → → → → Rebuilding indexes

  3. OpenEdge Deployment: Managing ABL Applications
    → Managing R-code Libraries

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