RECOVER_DATASOURCE

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

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

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

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

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

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

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

Поддерживается восстановление обычных логических таблиц и партиций; партиционированные таблицы не восстанавливаются.

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

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

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

При успешном восстановлении всех логических таблиц:

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

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

Восстановление материализованных представлений

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

Чтобы пересоздать представления, используйте комбинацию команд DROP MATERIALIZED VIEW и CREATE MATERIALIZED VIEW.

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

Параллельные процессы восстановления могут приводить к конфликтам обновления. Если нужно восстановить несколько сбойных датасорсов, восстанавливайте датасорсы последовательно: сначала завершите восстановление одного датасорса, затем запустите восстановление следующего и т.д.

Синтаксис

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

Параметры:

datasource_to_recover

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

reserved_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;
  • <table_name>: <error_message> — не удалось восстановить логическую таблицу table_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)