Практическое занятие 7.1
На этом практическом занятии необходимо:
- добавить в базу данных sports61 три AI-экстента фиксированного размера в онлайн;
- активировать в онлайн механизмы After-Imaging и AI File Management с помощью утилиты probkup online;
- добавить в базу данных несколько новых записей;
- дождаться формирования AI-архивов;
- с помощью утилиты prorest создать новую базу данных sports61_3;
- применить к базе sports61_3 архивы AI-экстентов базы sports61 с помощью команды rfutil roll forward.
Задание 1. Добавление AI-экстентов
Шаг | Действие |
1 | Откройте Proenv. |
2 | Перейдите в каталог C:\OpenEdge\WRK\test61\backups:
cd C:\OpenEdge\WRK\test61\backups |
3 | Создайте каталог aiarc, в нём будут сохраняться архивы AI-экстентов:
mkdir aiarc |
4 | Перейдите в каталог C:\OpenEdge\WRK\test61 и создайте в нём каталог ai, в котором будут размещены AI-экстенты базы данных:
cd C:\OpenEdge\WRK\test61 mkdir ai Примечание: в реальной среде AI-экстенты должны размещаться на отдельном диске. |
5 | Убедитесь, что база данных sports61 стартована.
Если база данных не стартована, то выполните её старт с помощью OpenEdge Management. |
6 | Создайте в каталоге test61 текстовый файл с именем addai.st со следующим содержимым:
a ./ai/ f 320 Примечание: в качестве примера для выполнения задания фиксированный размер 320 Кб достаточен. В реальной среде необходимо использовать размер, рассчитанный на основе BI. |
7 | Выполните проверку структурного файла:
prostrct addonline sports61 addai.st -validate |
8 | Если ошибок не обнаружено, выполните добавление:
prostrct addonline sports61 addai.st |
Задание 2. Активация After-Imaging и AI File Management
Для активации After-Imaging и AI File Management в онлайн используйте утилиту probkup.
Вводные данные:
- Имя файла резервной копии: sports61FullOnlRFR.bak
- Расположение резервной копии: C:\OpenEdge\WRK\test61\backups
- Расположение AI-архивов: C:\OpenEdge\WRK\test61\backups\aiarc
- Режим работы AI File Management: On-demand
Шаг | Действие |
1 | Выполните следующую команду:
probkup online sports61 enableai backups\sports61FullOnlRFR.bak enableaiarchiver -aiarcdir backups\aiarc |
2 | Добавьте новые записи в таблицу customer базы данных sports61. Для этого в каталоге C:\OpenEdge\WRK\test61 создайте процедурный файл addcust4.p со следующим ABL-кодом:
define variable x as integer no-undo. display "Adding 500 customer records, please wait ..." at row 12 columns 20 with no-box. repeat x = 1 to 500: create customer. assign customer.name = "Customer" + string(x) customer.city = "Omsk" customer.state = "OMS" customer.salesrep = "AAA". end. pause 3. quit. |
3 | Выполните процедурный файл addcust4.p в базе sports61:
mpro sports61 -p addcust4.p |
4 | Скопируйте файлы sports61.archival.log и sports61.st в каталог C:\OpenEdge\WRK\test61\backups. |
5 | Сохраните записи из таблицы customer у которых City = “Omsk” в файл dispcust1.txt:
1. Создайте процедурный файл с именем dispcust2.p со следующим ABL-кодом: for each customer where city = "Omsk" no-lock. display name city salesrep. end. quit. 2. Выполните процедурный файл dispcust2.p в базе sports61: mpro sports61 -b -p dispcust2.p > dispcust1.txt Файл dispcust1.txt будет использован в следующем задании для проверки восстановления транзакций. |
Задание 3. Выполнение Roll-forward Recovery
Шаг | Действие |
1 | Остановите базу данных sports61:
proshut sports61 -by |
2 | В каталоге C:\OpenEdge\WRK создайте каталог test71 и перейдите в него:
mkdir C:\OpenEdge\WRK\test71 |
3 | Создайте копию структурного файла sports61.st из каталога backups с именем sports71.st:
copy ..\test61\backups\sports61.st sports71.st |
4 | Откройте файл sports17.st в текстовом редакторе и измените пути и имя базы данных на новые.
Пример замены test61\sports61.b1 на test71\sports71.b1 b C:\OpenEdge\WRK\test71\sports71.b1 d "Schema Area":6,32;1 C:\OpenEdge\WRK\test71\sports71.d1 # d "Employee":7,32;1 C:\OpenEdge\WRK\test71\sports71_7.d1 f 320 d "Employee":7,32;1 C:\OpenEdge\WRK\test71\sports71_7.d2 ... ... ... # d "Misc":12,32;1 C:\OpenEdge\WRK\test71\sports71_12.d1 f 320 d "Misc":12,32;1 C:\OpenEdge\WRK\test71\sports71_12.d2 В файле C:\OpenEdge\WRK\test61\backups\sports61.archival.log найдите запись о последнем резервном копировании базы данных. В данном случае это будет запись с указанием резервной копии backups\sports61FullOnlRFR.bak. |
6 | Восстановите базу данных с именем sports71 в каталог test71 из резервной копии sports61FullOnlRFR.bak:
prorest sports71 ..\test61\backups\sports61FullOnlRFR.bak |
7 | Проверьте наличие записей таблицы customer у которых City = “Omsk” программой dispcust2.p.
Внимание! Чтобы не нарушить процесс Roll-Forwards Recovery подключение к базе данных должно быть выполнено только в режиме Read Only. Используйте параметр -RO для клиентской сессии: pro sports71 -p ..\test61\dispcust2.p -RO Программа не покажет записей, так как их ещё нет. |
8 | На основании файла архивов AI-экстентов test61\backups\sports61.archival.log определите список AI-архивов, которые были созданы после формирования резервной копии sports61FullOnlRFR.bak. В нашем случае существует только один AI-архив с именем C!~OpenEdge~WRK~test61~sports61.20160511.174314.00000001.sports61.a1, который хранится в каталоге test61\backups\aiarc\. |
9 | Применим транзакционные заметки из этого архива к базе данных sports71:
rfutil sports71 -C roll forward -a ..\test61\backups\aiarc\C!~OpenEdge~WRK~test61~sports61.20160511.174314.00000001.sports61.a1 4032 notes were processed. (1634) 0 in-flight transactions. (3785) 396 transactions were started. (1635) 395 transactions were completed. (11138) At the end of the .ai file, 1 transactions were still active. (1636) Как видно из последнего сообщения утилиты rfutil на момент архивации данного AI-экстента в базе данных оставалась действующая транзакция (применено 395 транзакций вместо 396 стартованных). Это означает, что в AI-экстентах базы данных sports61 остались записи, которые не были заархивированы. |
10 | Чтобы гарантировать, что все транзакции попадут в базу данных после восстановления, используем следующие по порядку AI-экстенты базы sports61, которые имеют статус FULL и BUSY. Для этого необходимо получить список AI-экстентов и их статусы следующей командой:
rfutil C:\OpenEdge\WRK\test61\sports61 -C aimage extent list |
Extent: 1 Status: Empty Type: Fixed Length Path: C:\OpenEdge\WRK\test61\ai\sports61.a1 Size: 368 Used: 0 Start: N/A Seqno: 0 Extent: 2 Extent: 3 Здесь мы видим, что у нас нет FULL экстентов, но есть экстент с номером 2 и статусом BUSY – в данном примере он и содержит недостающие транзакции. Экстенты с номером 1 и 3 интереса не представляют, так как они пустые (EMPTY). |
|
11 | Применим содержимое экстента C:\OpenEdge\WRK\test61\ai\sports61.a2 к базе данных sports71:
rfutil sports71 -C roll forward -a C:\OpenEdge\WRK\test61\ai\sports61.a2 Последними сообщениями утилиты должны быть: Roll forward of the after-image busy extent is complete. (3786) |
12 | Сформируйте файл dispcust2.txt и сравните содержимое с файлом dispcust1.txt, который был создан в предыдущем задании:
mpro sports71 -b -p C:\OpenEdge\WRK\test61\dispcust2.p > dispcust2.txt В обоих файлах вы должны видеть 500 записей из таблицы customer: Customer1 Omsk AAA |
Эти простые задания продемонстрировали работу механизма After-Imaging и процесса восстановления базы данных с использованием Roll-forward Recovery.
В завершение особо отметим, что в любой базе данных OpenEdge, которая содержит важную информацию, должен быть включён и работать механизм After-Imaging, что гарантирует восстановление данных в любой ситуации.