RECOVER_DATASOURCE
Содержание раздела
Поддерживается в версиях: 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.
Результат выполнения
При успешном восстановлении всех логических таблиц и материализованных представлений:
- Система включает датасорс (переводит в статус
enabled
). - Восстановленный датасорс начинает снова участвовать в исполнении запросов.
- Возобновляются синхронизация материализованных представлений и исполнение 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)