Механизм After-Imaging в OpenEdge
Управление After-Image экстентами
Многое в управлении After-imaging работает в автоматическом режиме, тем не менее, важно понимать, как этот механизм работает, и уметь вручную выполнять необходимые операции. Далее подробно описываются операции, которые могут выполняться в ручном режиме.
Мониторинг статусов экстентов
Как уже упоминалось ранее, статус AI-экстентов может принимать различные значения. Рассмотрим порядок смены этих статусов:
- EMPTY – AI-экстент пустой и доступен для использования;
- BUSY – AI-экстент, которые заполняется в текущий момент;
- FULL – во время переключения AI-экстентов, статус текущего экстента (BUSY) меняется на заполненный (FULL), а следующий пустой экстент (EMPTY) становится текущим (BUSY);
- LOCKED – статус используется, когда работает механизм OE Replication. Пока все AI-заметки не будут скопированы в базу TARGET из AI-экстента, он будет заблокирован (LOCKED). Как только копирование будет завершено, AI-экстент будет разблокирован и получит статус (FULL);
- ARCHIVED – во время работы OE Replication и AI File Management экстент AI, заблокированный и заархивированный механизмом AI File Management, получает статус ARCHIVED до завершения процесса репликации. После завершения репликации экстент будет помечен как пустой (EMPTY).
Существует три способа для определения статуса AI-экстента:
- RFUTIL AIMAGE EXTENT LIST
rfutil db-name -C aimage extent list
Эта команда показывает всю информацию о каждом из AI-экстентов, в том числе и их статусы:
Команда не выдаст ни каких данных, если After-imaging не активирован.
Примечание: см. пункт 3.1 «Практический пример мониторинга AI экстентов (RFUTIL AIMAGE EXTENT LIST)» Приложения 3.
- PROMON
C помощью утилиты PROMON можно просмотреть информацию о статусе AI-экстентов на экране «Status:AI Extents» (R&D -> 1 -> 15) который представлен на рисунке 3:
Рисунок 3 Экран AI Extents
Этот экран основан на данных, полученных из предыдущего примера, когда мы рассматривали мониторинг с помощью RFUTIL. Здесь мы можем получить информацию только о статусе и местоположении AI-экстентов. Поскольку в примере размер экстентов фиксирован, то отображается именно этот размер, а не реальные размеры экстентов, как это было видно в RFUTIL AIMAGE EXTENT LIST в поле Used. Но обычно в случае необходимости именно к этому методу прибегает администратор для быстрого определения состояния AI-экстентов.
- RFUTIL AIMAGE QUERY
rfutil db-name -C aimage query query-option by search-option search-value
query-option | Возвращаемое значение |
---|---|
EXTNUM | Номер экстента |
STATUS | Статус экстента: EMPTY, FULL, LOCKED, BUSY |
TYPE | Тип экстента, т.е. фиксированный или переменный |
SIZE | Размер экстента в блоках по 1-му килобайту |
USED | Количество использованных блоков по 1-му килобайт |
NAME | Имя экстента (включая полный путь к нему) |
SEQUENCE | Порядковый номер экстента |
STARTDATE | Дата и время начала записи в экстент |
ALL | Вся выше перечисленная информация |
Search-option | Search-value |
---|---|
EXTNUM | Целочисленное значение. В имени файла dbname.an, EXTNUM это n |
NAME | Символьная строка, содержащая имя экстента. Можно использовать: |
- полное имя файла (/dsk3/bank/users/valeriy/lecAI/db1/sports.a6);
- короткое имя файла (sports.a3);
- только расширение файла в формате *.an (*.a1).
SEQUENCEЦелочисленное значение. Порядковый номер AI-экстента.
– query-option, указывает на то, какую информацию необходимо получить об AI-экстенте. Возможные значения приведены в таблице 4:
– search-option, определяет по каким признакам идентифицировать экстент в запросе. Используется в связки с параметром search-value, смотри таблицу 5:
Параметр AIMAGE QUERY утилиты RFUTIL позволяет определять статус конкретного AI-экстента. Возвращаемое значение для большинства запросов будет равно либо простому числу, либо слову. Это сделано для того, чтобы его было легко использовать и обрабатывать в скриптах.
Используйте следующую команду для осуществления запроса:
Где,
Поэкспериментируйте с различными опциями запроса на тестовой базе данных sports.
Примечание: см. пункт 3.2 «Практический пример мониторинга AI экстентов (RFUTIL AIMAGE QUERY)» Приложения 3.
- RFUTIL AIMAGE EXTENT FULL
$ rfutil ./sports -C aimage extent full
/users/valeriy/lecAI/db1/sports.a1
Параметр AIMAGE EXTENT FULL показывает имя самого старшего заполненного (FULL) AI-экстента. Используйте эту информацию для архивирования AI-экстентов в порядке их заполнения. Даже если будут существовать одновременно несколько заполненных (FULL) AI-экстентов, команда сообщит о наиболее старшем из них.
Если выполнить следующую команду на базе данных sports, то информация о самом старшем FULL-экстенте будет выглядеть так:
Переключение AI-экстентов
Переключение AI-экстентов происходит, когда текущий экстент фиксированного размера заполнен, или истекло время заполнения экстента, выставленное при использовании механизма AI File Management.
Кроме того, переключение на новый AI-экстент происходит перед началом формирования online резервной копии. После восстановления базы из резервной копии накат AI-архивов выполняется с того AI-экстента, на который произошло переключение, или проще говоря, с первого AI-архива, созданного после формирования этой копии.
Перед началом формирования online резервной копии необходимо предварительно убедиться, что существует следующий по порядку AI-экстент со статусом EMPTY.
Фиксированные экстенты имеют строго определенный размер, поэтому движок базы данных самостоятельно определяет, когда экстент заполнится.
В отличие от экстентов фиксированного размера экстенты переменного размера ни чем не ограничены. Следовательно, движок базы данных не может определить, когда экстент будет заполнен. Если не используется RFUTIL AIMAGE NEW, то экстент будет продолжать заполняться до тех пор, пока не достигнет ограничения по размеру файла, выставленного операционной системой, или не будет достигнут предел в 2Gb адресного пространства для OpenEdge (если не активирована поддержка больших файлов). Экстент будет так же заполняться, пока не закончится место на диске. Когда текущий экстент заполнится, произойдет автоматическое переключение на следующий экстент, при условии, что он будет иметь статус EMPTY.
Если же следующий экстент заполнен (FULL), база данных будет остановлена. Однако чтобы этого не допустить, для приостановления активности базы можно использовать параметр запуска базы данных After-image Stall (-aistall). При использовании –aistall можно заархивировать старший заполненный экстент и пометить его как пустой (EMPTY). Тогда система автоматически переключит экстенты и восстановит активность базы данных. Можно также с помощью команды RFUTIL AIMAGE AIOFF выключить After-imaging.
Примечание: использование параметра -aistall и RFUTIL AIMAGE AIOFF можно только в многопользовательском режиме.
Когда база данных приостанавливает активность, в лог базы отправляется следующее сообщение:
Can't switch to after-image extent filename it is full. Backup ai extent and mark it as empty (3774)
База данных не сможет восстановить активность, пока необходимый для переключения экстент не будет заархивирован и помечен как пустой.
Можно вручную в online выполнять переключение AI-экстентов, не дожидаясь их полного заполнения. Для этого необходимо выполнить следующую команду:
rfutil db-name -C aimage new
Запуск RFUTIL AIMAGE NEW изменяет статус текущего экстента на FULL, а следующего на BUSY.
Примечание: см. Приложение 4 «Практический пример переключения AI-экстентов»
Метка:After-Imaging