RECOVER_DATASOURCE

Содержание раздела
  1. Восстанавливаемые сущности
  2. Датасорсы-источники
  3. Действия перед запросом
  4. Результат выполнения
  5. Восстановление нескольких датасорсов
  6. Синтаксис
  7. Варианты ответа
    1. Параметры ответа
  8. Ограничения
  9. Примеры
    1. Восстановление датасорса для одной логической БД
    2. Восстановление датасорса для всех логических БД окружения

Поддерживается в версиях: 7.6 / 7.5 / 7.4 / 7.3 / 7.2 / 7.1 / 7.0 / 6.12 / 6.11 / 6.10 / 6.9 / 6.8 / 6.7 / 6.6 / 6.5.

Запрос восстанавливает датасорс, обновляя или воссоздавая в нем физическую схему и/или данные указанной или всех логических БД окружения.

Запрос можно запустить при наличии операций записи в открытой дельты или незавершенных операций записи в целевой логической БД, но он сможет завершить восстановление только после завершения всех операций и закрытия/отката дельты.

Не используйте команду для ADP-датасорсов при включенном механизме auto-failover. Иначе возможно нарушение консистентности данных.

Восстанавливаемые сущности

Поддерживается восстановление:

При этом восстанавливаются только реплицированные сущности — те, данные которых размещены в восстанавливаемом датасорсе и хотя бы в еще одном датасорсе.

Партиционированные и прокси-таблицы не восстанавливаются.

Датасорсы-источники

Восстановление датасорса возможно на основе данных датасорсов-источников (доноров), указанных в запросе или выбранных системой из сконфигурированных.

Если датасорсы-источники указаны в запросе, в восстановлении участвуют только включенные из них. Иначе используются включенные датасорсы-источники при их наличии или отключенный датасорс при отсутствии включенных.

Подробнее о выборе датасорсов-источников см. в разделе О восстановлении датасорсов.

Действия перед запросом

Перед восстановлением отключите датасорс командой DISABLE_DATASOURCE.

Результат выполнения

При успешном восстановлении:

  1. Система включает датасорс (переводит в статус enabled).
  2. Восстановленный датасорс начинает снова участвовать в исполнении запросов.
  3. Возобновляются синхронизация материализованных представлений и исполнение retention-правил, приостановленные на время восстановления датасорса.

При наличии ошибок в процессе восстановления датасорс остается отключен (в статусе disabled), а синхронизация материализованных представлений с этим источником и исполнение retention-правил — приостановленными.

Отслеживать статусы датасорсов можно с помощью GET_RECOVER_STATUS.

Восстановление нескольких датасорсов

Датасорсы можно восстанавливать параллельно в любом порядке. Исключение: если все датасорсы отключены, сначала должен быть восстановлен последний отключенный датасорс.

Подробнее о шагах по восстановлению см. в разделе Как восстановить датасорс.

Синтаксис

RECOVER_DATASOURCE(datasource_to_recover[, from_datasorces][, full_recovery][, db_name][, recover_batch_period_ms])

Параметры:

datasource_to_recover

Имя восстанавливаемого датасорса. Должно соответствовать конфигурации и быть указано в одинарных кавычках (например, 'adp2').

from_datasorces

Список имен датасорсов, которые служат источниками восстанавливаемых данных. Имена должны соответствовать конфигурации и быть указаны в одинарных кавычках через запятую (например, 'adp', 'adb').

Если параметр отсутствует, система выбирает оптимальный датасорс для каждой восстанавливаемой сущности.

full_recovery

Флаг, определяющий режим восстановления. Возможные значения:

  • false (по умолчанию) — восстановление данных. Восстанавливаются операции записи, выполненные в других датасорсах с момента отключения восстанавливаемого датасорса до текущего момента. Физическая схема данных не обновляется;
  • true — удаление и пересоздание физической схемы с последующим восстановлением данных.

Флаг со значением true обязателен для успешного восстановления в следующих случаях:

  • логическая БД отсутствует или пуста в восстанавливаемом датасорсе;
  • есть расхождения в данных логической БД между восстанавливаемым и другими датасорсами;
  • есть расхождения между физической схемой в восстанавливаемом датасорсе и логической схемой.
db_name

Имя логической базы данных, данные которой восстанавливается для датасорса. Если параметр не указан, восстанавливается данные всех логических БД окружения.

recover_batch_period_ms

Интервал (в миллисекундах), за который выбираются операции записи для восстановления за один проход. Если не указан, используется интервал 10000 миллисекунд.

Варианты ответа

В ответе возвращается:

  • объект ResultSet с параметрами, описанными в секции Параметры ответа, при успешном выполнении запроса;
  • исключение при неуспешном выполнении запроса.

Параметры ответа

database

Имя логической базы данных, для которой было запущено восстановление датасорса.

status

Текущий статус восстановления логической БД в датасорсе.
Возможные значения:

  • enabledподлежащие восстановлению сущности логической БД успешно восстановлены, датасорс включен;
  • disabled — некоторые или все сущности логической БД не были восстановлены и требуют ручного разбора, датасорс отключен.
details

Дополнительная информация о восстановлении логической БД в датасорсе.
Возможные значения поля:

  • Recovered from <cn_from> to <cn_to> — логическая БД успешно восстановлена, в нее добавлены операции записи с cn_from по cn_to;
  • <entity_name>: <error_message> — не удалось восстановить логическую сущность entity_name, и восстановление было прервано;
  • Error: database is enabled — логическая БД не может быть восстановлена для этого датасорса, так как он включен.

Ограничения

  • Запрос доступен только для СУБД ADB и ADP.
  • Восстановление не начинается при наличии незавершенных операций, начатых до отключения восстанавливаемых логических БД в датасорсах, — возвращается ответ с информацией об этом.
  • Восстановление не завершается при наличии операций записи в открытой дельте или незавершенных операций записи в восстанавливаемых логических БД, — система ждет завершения/отмены операций или закрытия/отката дельт.
  • Партиционированные и прокси-таблицы не восстанавливаются.
  • Холодные данные не восстанавливаются.

Примеры

Восстановление датасорса для одной логической БД

Восстановление данных логической БД marketing в датасорсе adp2 без пересоздания физических таблиц и с копированием данных из указанных датасорсов-источников adp и adb:

RECOVER_DATASOURCE('adp2', 'adp', 'adb', marketing);

-- равносилен запросу
RECOVER_DATASOURCE('adp2', 'adp', 'adb', false, marketing);

Восстановление данных логической БД marketing в датасорсе adp2 с пересозданием физических таблиц, копированием данных из автоматически выбираемых датасорсов-источников и восстановлением операций записи пачками, накопленными за 60000 миллисекунд (1 минуту):

RECOVER_DATASOURCE('adp2', true, marketing, 60000)

Восстановление датасорса для всех логических БД окружения

Восстановление данных всех логических БД в датасорсе adp2 без пересоздания физических таблиц и с копированием данных из указанных датасорсов-источников adp и adb:

RECOVER_DATASOURCE('adp2', 'adp', 'adb');

-- равносилен запросу
RECOVER_DATASOURCE('adp2', 'adp', 'adb', false);

Восстановление данных всех логических БД в датасорсе adp2 с пересозданием физических таблиц, копированием данных из автоматически выбираемых датасорсов-источников и восстановлением операций записи пачками, накопленными за 60000 миллисекунд (1 минуту):

RECOVER_DATASOURCE('adp2', true, 60000)