Добавление AI-экстента может потребоваться в том случае, когда невозможно выполнить переключение экстентов из-за их заполненности и невозможно перевести любой из них в состояние EMPTY. В такой ситуации база данных либо будет остановлена, либо ее активность будет заморожена, при условии, что при старте был указан параметр After-image stall (-aistall).
По заявленной в документации по OpenEdge схеме работы данной функциональности добавление AI-экстента выполняется командами PROSTRCT ADD или PROSTRCT ADDONLINE. AI-экстент должен быть добавлен к концу списка экстентов базы данных. Утилита PROSTRCT REORDER AI должна переместить новый AI-экстент так, чтобы он находился сразу за заполненным экстентом. Из чего следует, что реорганизация AI-экстентов необходима, когда следующий по порядку экстент заполнен. Например, это может произойти, когда при активированной репликации все экстенты имеют статус LOCKED, т. к. репликация блокирует экстент от использования его утилитой RFUTIL. Однако стоит заметить, что на самом деле PROSTRCT REORDER AI на текущий момент в online не работает. Использовать эту команду можно только, когда база данных все-таки остановлена. Возможно, что в будущих версиях утилита будет доработана.
Для реорганизации AI-экстентов в offline используйте следующую команду:
prostrct reorder ai db-name
Внимание: команда PROSTRCT REORDER AI изменяет имена AI-экстентов, а именно: расширение .an. Так же меняется и номер экстента. Обязательно после использования утилиты выполните PROSTRCT LIST для переформирования ST-файла.
Следующий пример иллюстрирует эффект от использования PROSTRCT REORDER AI для экстентов.
На рисунке 5 представлен случай, когда при заполнении экстента A1 база данных встала, т.к. невозможно переключиться на следующий экстент в связи с заполненностью экстентов A2 и A3.
Рисунок 5 Заполнение экстента A1
Добавляем новые AI-экстенты:
Рисунок 6 Добавление новых экстентов
Простого добавления экстентов недостаточно, т.к. экстент A1 по-прежнему не сможет переключиться на следующий экстент A2, потому что А2 всё еще заполнен. На следующем рисунке показан результат реорганизации AI-экстентов утилитой PROSTRCT REORDER AI.
Рисунок 7 Реорганизации AI экстентов
После реорганизации работа с AI-экстентами может быть продолжена. Это возможно потому, что добавленные пустые экстенты будут перемещены сразу за текущим BUSY-экстентом. Их номера и имена файлов будут изменены, но при этом их физическое размещение и размеры затронуты не будут.
Если было замечено, что AI-экстенты перестали переключаться, а база данных еще не встала (у вас еще есть запас времени по размеру экстента A1), то можно избежать реорганизации AI-экстентов. Для этого отключите репликацию с помощью PROUTIL DISABLESITEREPLICATION. Все экстенты, которые имеют статус LOCKED, получат статус FULL. После чего можно вручную выполнить их архивацию и пометить как EMPTY. Если же работает AI File Management, то он самостоятельно выполнит все необходимые действия по освобождению экстентов сразу после отключения OpenEdge Replication.
Примечание: см. Приложение 8 «Практический пример использования PROSTRCT REORDER AI».