бд. Системауправлениябазами
Скачать 0.74 Mb.
|
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 Утилита предложит ввести пароль и попытается восстановить таблицу в БД. Если таблица с таким именем уже существует у данного пользователя, то будет выдано соответствующее предупреждение. Другой возможный вариант: у пользователя сохраняет данную таблицу в файл: 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 |