Механизм After-Imaging в OpenEdge
Приложение 3 Мониторинг AI-экстентов
3.1 RFUTIL AIMAGE EXTENT LIST
Для просмотра состояния AI-экстентов выполните следующую команду:
rfutil ./sports -C aimage extent list
Информация о состоянии наших шести AI-экстентов будет выведена в следующем виде:
Extent: 1 Status: Busy Type: Fixed Length Path: /dsk3/users/valeriy/lecAI/db1/sports.a1 Size: 2040 Used: 1 Start: Fri Jul 10 16:11:54 2009 Seqno: 1 Extent: 2 Status: Empty Type: Fixed Length Path: /dsk3/users/valeriy/lecAI/db1/sports.a2 Size: 2040 Used: 0 Start: N/A Seqno: 0 Extent: 3 Status: Empty Type: Fixed Length Path: /dsk3/users/valeriy/lecAI/db1/sports.a3 Size: 2040 Used: 0 Start: N/A Seqno: 0 Extent: 4 Status: Empty Type: Fixed Length Path: /dsk3/users/valeriy/lecAI/db1/sports.a4 Size: 2040 Used: 0 Start: N/A Seqno: 0 Extent: 5 Status: Empty Type: Fixed Length Path: /dsk3/users/valeriy/lecAI/db1/sports.a5 Size: 2040 Used: 0 Start: N/A Seqno: 0 Extent: 6 Status: Empty Type: Fixed Length Path: /dsk3/users/valeriy/lecAI/db1/sports.a6 Size: 2040 Used: 0 Start: N/A Seqno: 0
Выполните следующий ABL-код в Progress Procedure Editor, который сымитирует некоторую пользовательскую деятельность, изменяя часть данных в базе, после чего посмотрите, как изменилось состояние AI-экстентов:
Листинг 3 (gen_ai.p). Генерация изменения содержимого базы
DO TRANSACTION: FOR EACH CUSTOMER EXCLUSIVE-LOCK. CUSTOMER.NAME = CUSTOMER.NAME + "#TEST_AI". END. END. DO TRANSACTION: FOR EACH CUSTOMER EXCLUSIVE-LOCK. CUSTOMER.NAME = ENTRY(1,CUSTOMER.NAME,"#"). END. END.
Выполните этот код несколько раз, наблюдая с помощью команды RFUTIL AIMAGE EXTENT LIST, как изменяется состояние AI-экстентов между запусками. Ниже приведен пример состояния AI-экстентов, когда программа отработала 3 раза (здесь приведен результат только для первых двух экстентов, которые подверглись изменению):
Extent: 1 Status: Full Type: Fixed Length Path: /dsk3/users/valeriy/lecAI/db1/sports.a1 Size: 2040 Used: 2040 Start: Fri Jul 10 16:11:54 2009 Seqno: 1 Extent: 2 Status: Busy Type: Fixed Length Path: /dsk3/users/valeriy/lecAI/db1/sports.a2 Size: 2040 Used: 836 Start: Fri Jul 10 16:30:48 2009 Seqno: 2
Что мы видим – первый экстент, который вначале имел статус BUSY, оказался заполненным (поле Used: 2040) и получил статус FULL; второй экстент, имевший ранее статус EMPTY, получил статус BUSY, что означает его использование в текущий момент времени. В поле Used мы видим, что второй экстент уже заполнен до 836 килобайт.
Информация, выводимая командой, полезна при принятии решений в различных ситуациях, возникающих во время работы механизма After-Imaging.
3.2 RFUTIL AIMAGE QUERY
Если необходимо определить, когда After-imaging начал запись в экстент с конкретным порядковым номером, можно использовать следующую команду:
rfutil ./sports -C aimage query startdate by sequence 1
Возвращаемое значение – дата и время начала записи в AI-экстент:
Fri Jul 10 16:11:54 2009
Если необходимо получить полную информацию об AI-экстенте с конкретным именем, выполните команду:
rfutil ./sports -C aimage query all by name sports.a2
На экран будут выведены следующие данные:
Extent: 2 Status: Busy Type: Fixed Length Path: /dsk3/users/valeriy/lecAI/db1/sports.a2 Size: 2040 Used: 836 Start: Fri Jul 10 16:30:48 2009 Seqno: 2
Метка:After-Imaging