Практическое занятие 6.1
На этом практическом занятии необходимо выполнить серию резервных копий, включая полную онлайн копию и инкрементальные копии, для существующей базы данных. Затем восстановить все резервные копии в новую базу данных. Полная резервная копия базы данных sports61 должна быть создана в онлайн с помощью OpenEdge Management, а инкрементальные копии этой же базы – утилитой командной строки probkup.
Для восстановления резервных копий в новую базу данных sports62 используйте утилиту командной строки prorest.
Задание 1. Подготовка базы данных sports61
В первую очередь для выполнения следующих задний вспомним предыдущие уроки и создадим базу данных sports61.
Шаг | Действие |
1 | Откройте Proenv. |
2 | В рабочем каталоге (C:\OpenEdge\WRK) создайте каталог test61, перейдите в него и создайте каталог backups:
mkdir test61 cd test61 mkdir backups |
3 | Скопируйте базу данных %DLC%\sports2000 в базу данных sports61:
procopy %DLC%\sports2000 sports61 |
4 | Откройте консоль OpenEdge Management, зарегистрируйте базу данных sports61 в качестве управляемого ресурса и выполните её старт. Конфигурацию базы данных sports61 оставьте со значениями по умолчанию. В случае необходимости обратитесь к уроку «Старт и останов с помощью OpenEdge Management». |
Задание 2. Создание полной резервной копии в онлайн
Перед выполнением задания убедитесь в том, что база данных sports61 зарегистрирована в качестве управляемого ресурса в OpenEdge Management и стартована.
Шаг | Действие |
1 | Создайте задачу для резервного копирования в онлайн для базы sports61:
1. В консоли OpenEdge Management щёлкните мышью по меню Jobs, в секции New перейдите по ссылке Job from Template. 2. На странице Create Custom Job в секции Database Maintenance перейдите по ссылке OnlineBackup. 3. На странице Database Backup Job в поле Name введите Sports61FullBak. 4. Из списка Database выберите базу данных sports61. 5. В секции Backup device выберите Disk. 6. В поле Directory введите полный путь к каталогу для сохранения резервной копии C:\OpenEdge\WRK\test61\backups 7. В поле File name укажите имя файла резервной копии sports61Full.bak. 8. Остальные параметры оставьте без изменений. 9. Сохраните изменения (Save). |
2 | На открывшейся странице с общей информацией о задаче выполните задачу Sports61FullBak, щёлкнув мышью по кнопке Run Now. |
3 | После завершения работы задачи выполните частичную проверку резервной копии sports61Full.bak:
1. Откройте Proenv. 2. Перейдите в каталог C:\OpenEdge\WRK\test61\ и выполните следующую команду: prorest sports61 .\backups\sports61Full.bak -vp This is a full backup of C:\OpenEdge\WRK\test61\sports61.db. (6759) |
4 | С помощью проводника Windows скопируйте дополнительные файлы базы данных sports61.st и sports61.lg в каталог C:\OpenEdge\WRK\test61\backups |
5 | Выполните усечение журнала базы данных (.lg):
prolog sports61 -online |
Задание 3. Создание инкрементальных резервных копий в онлайн
Выполнить серию из трёх инкрементальных резервных копий базы sports61, перед каждой из которых в базу данных будут добавлены новые данные. Для создания инкрементальной копии используйте утилиту командной строки probkup. Для добавления данных и просмотра новых записей создайте несколько простых ABL-процедур (.p), вся необходимая информация для этого будет представлена в описанных далее шагах.
Примечание: в Windows, если используется 32-битная версия OpenEdge, то вместо команды prowin используйте команду prowin32. В Unix используйте команду mpro. Убедитесь, что база данных стартована.
Шаг | Действие |
1 | Подготовка ABL-процедур:
1. Откройте текстовый редактор. 2. Программа 1: в новом текстовом файле введите следующий ABL-код: DEFINE VARIABLE x AS INTEGER NO-UNDO. DISPLAY "Adding 10 customer records, please wait ..." AT ROW 12 COLUMNS 20 WITH NO-BOX. REPEAT x = 1 TO 10: CREATE customer. ASSIGN customer.Name = "Customer" + STRING(x) customer.City = "Moscow" customer.State = "MSK" customer.SalesRep = "BBB". END. PAUSE 3. QUIT. 3. Сохраните файл в каталоге C:\OpenEdge\WRK\test61 с именем addcust1.p. |
4. Программа 2: в новом текстовом файле введите следующий ABL-код:
DEFINE VARIABLE x AS INTEGER NO-UNDO. DISPLAY "Adding 10 customer records, please wait ..." AT ROW 12 COLUMNS 20 WITH NO-BOX. REPEAT x = 11 TO 20: CREATE customer. ASSIGN customer.Name = "Customer" + STRING(x) customer.City = "Saint-Petersburg" customer.State = "SPB" customer.SalesRep = "SLS". END. PAUSE 3. QUIT. 5. Сохраните файл в каталоге C:\OpenEdge\WRK\test61 с именем addcust2.p. 6. Программа 3: в новом файле введите следующий ABL-код: DEFINE VARIABLE x AS INTEGER NO-UNDO. DISPLAY "Adding 10 customer records, please wait ..." AT ROW 12 COLUMNS 20 WITH NO-BOX. REPEAT x = 21 TO 30: CREATE customer. ASSIGN customer.Name = "Customer" + STRING(x) customer.City = "Almaty" customer.State = "ALM" customer.SalesRep = "JAL". END. PAUSE 3. QUIT. 7. Сохраните файл в каталоге C:\OpenEdge\WRK\test61 с именем addcust3.p. |
|
8. Программа 4: в новом текстовом файле введите следующий ABL-код:
FOR EACH customer WHERE name MATCHES 'Customer*' NO-LOCK: DISPLAY name city salesrep. END. PAUSE . QUIT. 9. Сохраните файл в каталоге C:\OpenEdge\WRK\test61 с именем dispcust.p. |
|
2 | В Proenv перейдите в каталог C:\OpenEdge\WRK\test61. |
3 | Добавьте в таблицу customer базы данных sports61 десять записей с помощью программы addcust1.p:
prowin sports61 -p addcust1.p |
4 | Проверьте правильность добавления записей:
prowin sports61 -p dispcust.p ┌──────────────────────────────────────────────────────────────────┐ │Name City Sales Rep│ │────────────────────────────── ───────────────────────── ─────────│ │Customer1 Moscow BBB │ │Customer2 Moscow BBB │ │Customer3 Moscow BBB │ │Customer4 Moscow BBB │ │Customer5 Moscow BBB │ │Customer6 Moscow BBB │ │Customer7 Moscow BBB │ │Customer8 Moscow BBB │ │Customer9 Moscow BBB │ │Customer10 Moscow BBB │ └──────────────────────────────────────────────────────────────────┘ |
5 | Создайте первую инкрементальную копию базы данных sports61, сохранив её в файл C:\OpenEdge\WRK\test61\backups\sports61_inc1.bak:
probkup online sports61 incremental .\backups\sports61_inc1.bak |
6 | Выполните частичную проверку инкрементальной копии sports61_inc1.bak:
prorest sports61 .\backups\sports61_inc1.bak -vp |
7 | Добавьте десять записей в таблицу customer с помощью программы addcust2.p:
prowin sports61 -p addcust2.p |
8 | Проверьте правильность добавления записей:
prowin sports61 -p dispcust.p ┌──────────────────────────────────────────────────────────────────┐ │Name City Sales Rep│ │────────────────────────────── ───────────────────────── ─────────│ │Customer1 Moscow BBB │ │Customer2 Moscow BBB │ │Customer3 Moscow BBB │ │Customer4 Moscow BBB │ │Customer5 Moscow BBB │ │Customer6 Moscow BBB │ │Customer7 Moscow BBB │ │Customer8 Moscow BBB │ │Customer9 Moscow BBB │ │Customer10 Moscow BBB │ │Customer11 Saint-Petersburg SLS │ │Customer12 Saint-Petersburg SLS │ │Customer13 Saint-Petersburg SLS │ │Customer14 Saint-Petersburg SLS │ │Customer15 Saint-Petersburg SLS │ │Customer16 Saint-Petersburg SLS │ │Customer17 Saint-Petersburg SLS │ │Customer18 Saint-Petersburg SLS │ │Customer19 Saint-Petersburg SLS │ │Customer20 Saint-Petersburg SLS │ └──────────────────────────────────────────────────────────────────┘ |
9 | Создайте вторую инкрементальную копию базы данных sports61, сохранив её в файл C:\OpenEdge\WRK\test61\backups\sports61_inc2.bak:
probkup online sports61 incremental .\backups\sports61_inc2.bak |
10 | Выполните частичную проверку инкрементальной копии sports61_inc2.bak:
prorest sports61 .\backups\sports61_inc2.bak -vp |
11 | Добавьте ещё десять записей в таблицу customer с помощью программы addcust3.p:
prowin sports61 -p addcust3.p |
12 | Проверьте правильность добавления записей:
prowin sports61 -p dispcust.p ┌──────────────────────────────────────────────────────────────────┐ │Name City Sales Rep│ │────────────────────────────── ───────────────────────── ─────────│ │Customer1 Moscow BBB │ │Customer2 Moscow BBB │ |*** | |*** | │Customer9 Moscow BBB │ │Customer10 Moscow BBB │ │Customer11 Saint-Petersburg SLS │ │Customer12 Saint-Petersburg SLS │ |*** | |*** | │Customer19 Saint-Petersburg SLS │ │Customer20 Saint-Petersburg SLS │ │Customer21 Almaty JAL │ │Customer22 Almaty JAL │ |*** | |*** | │Customer29 Almaty JAL │ │Customer30 Almaty JAL │ └──────────────────────────────────────────────────────────────────┘ |
13 | Создайте третью инкрементальную копию базы данных sports61, сохранив её в файл C:\OpenEdge\WRK\test61\backups\sports61_inc3.bak:
probkup online sports61 incremental .\backups\sports61_inc3.bak |
14 | Выполните частичную проверку инкрементальной копии sports61_inc3.bak:
prorest sports61 .\backups\sports61_inc3.bak -vp |
Задание 4. Восстановление из резервных копий
С помощью утилиты командной строки prorest и созданных в предыдущих заданиях резервных копий восстановить базу данных с именем sports61_2. Проверить правильность восстановленных данных с помощью ABL-процедуры dispcust.p.
Шаг | Действие |
1 | Восстановите полную резервную копию sports61Full.bak базы данных sports61 в новую базу данных C:\OpenEdge\WRK\test61\sports61_2:
prorest sports61_2 .\backups\sports61Full.bak |
2 | Проверьте наличие созданных в предыдущем задании записей в восстановленной базе данных sports61_2.
Согласно правилам восстановления из резервных копий, не допускается внесение каких-либо изменений в базу данных, если необходимо последующее восстановление инкрементальных копий, в том числе не допускается старт базы данных. Чтобы гарантировать, что в базу данных не будут внесены случайные изменения при подключении к ней мы будем использовать режим сессии Read Only, который устанавливается добавлением параметра клиентской сессии -RO. prowin sports61_2 -1 -p dispcust.p -RO Поскольку база данных sports61_2 не стартована, то подключение к ней возможно только в однопользовательском режиме, для этого применяется параметр клиентской сессии -1. Так как полная резервная копия базы данных sports61 не содержит добавленных вами записей, то в результате выполнения ABL-процедуры dispcust.p на экран не будет выведено ни одной записи. |
3 | Восстановите первую инкрементальную резервную копию sports61_inc1.bak базы данных sports61 в восстановленную из полной резервной копии базу данных sports61_2:
prorest sports61_2 .\backups\sports61_inc1.bak |
4 | Выполните ABL-процедуру dispcust.p, которая должна вывести на экран 10 записей со значением Moscow в поле City. |
5 | Восстановите вторую инкрементальную резервную копию sports61_inc2.bak базы данных sports61 в базу данных sports61_2:
prorest sports61_2 .\backups\sports61_inc2.bak |
6 | Повторно выполните ABL-процедуру dispcust.p, которая должна вывести на экран 20 записей со значениями Moscow и Saint-Petersburg в поле City. |
7 | Восстановите третью инкрементальную резервную копию sports61_inc3.bak базы данных sports61 в базу данных sports61_2:
prorest sports61_2 .\backups\sports61_inc3.bak |
8 | Повторно выполните ABL-процедуру dispcust.p, которая должна вывести на экран 30 записей со значениями Moscow, Saint-Petersburg и Almaty в поле City.
┌──────────────────────────────────────────────────────────────────┐ │Name City Sales Rep│ │────────────────────────────── ───────────────────────── ─────────│ │Customer1 Moscow BBB │ │Customer2 Moscow BBB │ |*** | |*** | │Customer9 Moscow BBB │ │Customer10 Moscow BBB │ │Customer11 Saint-Petersburg SLS │ │Customer12 Saint-Petersburg SLS │ |*** | |*** | │Customer19 Saint-Petersburg SLS │ │Customer20 Saint-Petersburg SLS │ │Customer21 Almaty JAL │ │Customer22 Almaty JAL │ |*** | |*** | │Customer29 Almaty JAL │ │Customer30 Almaty JAL │ └──────────────────────────────────────────────────────────────────┘ |