Главная страница
Навигация по странице:

  • Пример использования языка сценариев для проведения регулярного инкрементного архивирования данных

  • © Архивирование и восстановление базы данных. ЗАО НПП «РЕЛЭКС», 1990-2021 81

  • © Архивирование и восстановление базы данных. ЗАО НПП «РЕЛЭКС», 1990-2021 83 Указатель ключей

  • бд. Системауправлениябазами


    Скачать 0.74 Mb.
    НазваниеСистемауправлениябазами
    Дата01.03.2022
    Размер0.74 Mb.
    Формат файлаpdf
    Имя файлаlhb.pdf
    ТипДокументы
    #378057
    страница8 из 8
    1   2   3   4   5   6   7   8
    80
    © Архивирование и восстановление базы данных. ЗАО НПП «РЕЛЭКС», 1990-2021

    Пример
    Допустим, необходимо сохранить таблицу CUSTOMER со всеми её зависимыми объектами и внешними ссылками. Файл архива customer.lhb зашифруем по паролю и
    снабдим комментарием, что это таблица CUSTOMER.
    lhb s -u SYSTEM/MANAGER -f customer.lhb -g password -c "CUSTOMER
    table" -ot CUSTOMER -oref -d
    Для последующего восстановления данной таблицы в БД вводим команду:
    lhb r -u SYSTEM/MANAGER -f customer.lhb
    Утилита предложит ввести пароль и попытается восстановить таблицу в БД. Если таблица с таким именем уже существует у данного пользователя, то будет выдано соответствующее предупреждение.
    Другой возможный вариант: у пользователя есть таблица CLIENTS, и он желает передать её со всем содержимым пользователю . Для этого пользователь
    сохраняет данную таблицу в файл:
    lhb s -u BOLT/ITALIC -f clients.lhb -ot CLIENTS
    и передает созданный файл архива пользователю , а тот уже восстанавливает эту таблицу как свою по команде:
    lhb s -u SYSTEM/MANAGER -f clients.lhb -ot CLIENTS -own
    Следует всегда в подобных случаях стараться переносить объекты, от которых эта таблица зависит.
    Пример использования языка сценариев для проведения регулярного
    инкрементного архивирования данных
    Преимущества от использования языка сценариев для архивирования данных: можно гибко настроить график сохранения по конкретным временным условиям в определенные файлы архива.
    Пример листинга файла сценариев, который позволяет сохранять БД при запуске и затем каждый день в 02:00; при этом предыдущие файлы переименовываются соответственно в arc1.lhb...arc4.lhb. Свежий файл имеет имя db.lhb. Если при запуске lhb задать ключ
    -fl FILE.LOG, то история сохранения будет накапливаться в файле FILE.LOG.
    Содержимое файла script.bsl:
    /* ---------------------------------------------------------------
    */
    variables:
    USERNAME ="SYSTEM"; /* user name */
    USERPASSWORD ="MANAGER"; /* user password */
    ARCDEVICE ="./"; /* for new files */
    ARCFNAME =""; /* new name for old file */
    CHKSUF = ".lhb"; /* suffix for checkpoint file */
    NUMFILE = 1;
    /* ---------------------------------------------------------------
    */
    rights:
    © Архивирование и восстановление базы данных. ЗАО НПП «РЕЛЭКС», 1990-2021
    81
    everyday (time = '02:00')
    {
    NUMFILE = 1;
    while (NUMFILE < 5)
    {
    if (exist (ARCDEVICE+"arc" + TOSTR(NUMFILE) +
    ".lhb"))
    {
    if (NUMFILE == 1)
    delete (ARCDEVICE+"arc" + TOSTR(NUMFILE) +
    ".lhb");
    Else rename (ARCDEVICE+"arc" + TOSTR(NUMFILE) +
    ".lhb",
    ARCDEVICE+"arc" + TOSTR(NUMFILE-1) + ".lhb");
    } /* if */
    NUMFILE = NUMFILE + 1;
    } /* while */
    rename (ARCDEVICE+"db.lhb", ARCDEVICE+"arc" +
    TOSTR(NUMFILE-1) + ".lhb");
    backup ("s -u "+USERNAME+"/"+USERPASSWORD+"
    -f "+ARCDEVICE+"db.lhb"+" -qc DF");
    logprint (CTIMESTAMP() + "---File" + "db" + CHKSUF +
    "created.\n");
    exception: /* for everyday */
    print ("Error=" + TOSTR(CERROR) +
    ",LinError=" + TOSTR(LINERROR) +
    ",SysError=" + TOSTR(SYSERROR));
    logprint (CTIMESTAMP() + "---Error=" +
    TOSTR(CERROR) +
    ",LinError=" + TOSTR(LINERROR) +
    ",SysError=" + TOSTR(SYSERROR));
    stop;
    } /* everyday */
    /*
    ----------------------------------------------------------------
    */
    special:
    before /* just after the start */
    {
    NUMFILE = 1;
    while (NUMFILE < 5)
    {
    if (exist (ARCDEVICE+"arc" + TOSTR(NUMFILE) +
    ".lhb" ))
    {
    82
    © Архивирование и восстановление базы данных. ЗАО НПП «РЕЛЭКС», 1990-2021
    if (NUMFILE == 1)
    delete (ARCDEVICE+"arc" + TOSTR(NUMFILE) +
    ".lhb" );
    Else rename (ARCDEVICE+"arc" + TOSTR(NUMFILE) +
    ".lhb",
    ARCDEVICE+"arc" + TOSTR(NUMFILE-1) + ".lhb" );
    } /* if */
    NUMFILE = NUMFILE + 1;
    } /* while */
    rename (ARCDEVICE+"db.lhb", ARCDEVICE+"arc" +
    TOSTR(NUMFILE-1) + ".lhb");
    backup ("s -u "+USERNAME+"/"+USERPASSWORD+"
    -f "+ARCDEVICE+"db.lhb"+" -qc DF");
    logprint (CTIMESTAMP() + "---File" + "db"+ CHKSUF +
    "created.\n");
    }
    after /* after stop or Ctrl-C */
    {
    print ("---Stop backup system");
    if (CERROR != 0)
    logprint (CTIMESTAMP() + "---Error present:" +
    TOSTR(CERROR));
    logprint (CTIMESTAMP() + "---Stop backup system\n");
    }
    iferr /* global */
    {
    print ("Error=" + TOSTR(CERROR) +
    ",LinError=" + TOSTR(LINERROR) +
    ",SysError=" + TOSTR(SYSERROR));
    logprint (CTIMESTAMP() + "---Error=" +
    TOSTR(CERROR) +
    ",LinError=" + TOSTR(LINERROR) +
    ",LinError=" + TOSTR(LINERROR));
    stop;
    }
    /*
    ----------------------------------------------------------------
    */
    Для запуска данного файла сценария вводим команду:
    lhb script -ft script.bsl -fl FILE.LOG
    Утилита выполнит полное сохранение БД и затем будет ожидать 2:00, после чего повторит очередное полное сохранение в новый файл архива.
    © Архивирование и восстановление базы данных. ЗАО НПП «РЕЛЭКС», 1990-2021
    83

    Указатель ключей
    -?, 27
    -bg, 25
    -briefversion, 26
    -c, 22
    -clear, 35
    -crpart, 35
    -d, 30
    -db, 24
    -dbonly, 24
    -dev, 35
    -diff, 24
    -dp, 34
    -f, 21
    -fl, 22
    -fo, 33
    -ft, 21
    -g, 22
    -h, 27
    -inc, 33
    -ldev, 35
    -le, 25
    -list, 35, 35
    -lr, 25
    -movecp, 23
    -mypid, 26
    -n, 22
    -nocompress , 24
    -notestcrc, 26
    -oa, 30
    -oall, 27
    -oap, 30
    -ob, 32
    -oe, 28
    -on, 32
    -only, 31
    -op, 32
    -oq, 32
    -or, 30
    -oref, 29
    -os, 29
    -osr, 30
    -ot, 28
    -otr, 32
    -otwd, 29
    -ou, 28
    -out, 25
    -out+, 26
    -ov, 29
    -own, 33
    -p, 22
    -pf, 21
    -pg, 22
    -pi, 34
    -pid, 26
    -priority, 34
    -qc, 36
    -qq, 36
    -qx, 36
    -startinc, 33
    -stopinc, 33
    -takeforeign, 32
    -u, 21
    -v, 22
    -version, 26
    -vi, 33
    -wait, 23
    -wd, 24
    84
    © Архивирование и восстановление базы данных. ЗАО НПП «РЕЛЭКС», 1990-2021
    1   2   3   4   5   6   7   8


    написать администратору сайта