RECOVER_DATASOURCE
Содержание раздела
Поддерживается в версиях: 6.7 / 6.6 / 6.5.
Запрос восстанавливает датасорс, обновляя или воссоздавая в нем физическую схему и/или данные указанной или всех логических БД окружения.
Восстановление датасорса возможно на основе данных резервных датасорсов, указанных в запросе или автоматически выбранных системой.
Запрос не может быть выполнен, если в целевой логической базе данных есть открытая дельта или незавершенные операции записи.
Подробнее о функции восстановления датасорсов см. в разделе Как устроена система > Восстановление датасорсов, о действиях по восстановлению датасорса см. в разделе Работа с системой > Восстановление датасорса.
Восстанавливаемые сущности
Для датасорса восстанавливаются только реплицированные логические таблицы, — те логические таблицы, данные которых размещены в восстанавливаемом датасорсе и хотя бы в еще одном активном датасорсе хранилища данных.
Поддерживается восстановление обычных логических таблиц и партиций; партиционированные таблицы не восстанавливаются.
Действия перед запросом
Перед восстановлением отключите датасорс командой DISABLE_DATASOURCE.
Результат выполнения
В случае успешного восстановления всех логических таблиц система автоматически включает датасорс и он снова начинает участвовать в исполнении запросов. Также возобновляются синхронизация материализованных представлений и исполнение retention-правил, которые были приостановлены системой на время восстановления датасорса.
При наличии ошибок в процессе восстановления датасорс остается неактивным, а синхронизация материализованных представлений с этим источником и исполнение retention-правил — приостановленными.
Восстановление материализованных представлений
Если данные материализованных представлений, размещенные в датасорсе, были утеряны во время сбоя, пересоздайте эти представления после успешного восстановления датасорса.
Чтобы пересоздать представления, используйте комбинацию команд DROP MATERIALIZED VIEW и CREATE MATERIALIZED VIEW.
Восстановление нескольких датасорсов
Параллельные процессы восстановления могут приводить к конфликтам обновления. Если нужно восстановить несколько сбойных датасорсов, восстанавливайте датасорсы последовательно: сначала завершите восстановление одного датасорса, затем запустите восстановление следующего и т.д.
Синтаксис
RECOVER_DATASOURCE(datasource_to_recover[, reserved_datasorces][, full_recovery][, db_name][, recover_batch_size])
Параметры:
datasource_to_recover
-
Имя восстанавливаемого датасорса. Указывается в соответствии с конфигурацией, в одинарных кавычках (например,
'adp2'
). reserved_datasorces
-
Список имен резервных датасорсов, используемых как источники восстанавливаемых данных. Имена указываются в соответствии с конфигурацией, в одинарных кавычках через запятую (например,
'adp', 'adb'
).
Если имена не указаны, система выбирает оптимальный датасорс для каждой восстанавливаемой логической таблицы. full_recovery
-
Флаг, определяющий режим восстановления датасорса. Возможные значения:
false
(по умолчанию) — восстановление данных. Восстанавливаются операции записи, выполненные в резервных датасорсах с момента отключения восстанавливаемого датасорса до текущего момента. Физическая схема данных не обновляется;true
— удаление и пересоздание физической схемы с последующим восстановлением данных.
Флаг со значениемtrue
обязателен, если логическая БД отсутствует или пуста в восстанавливаемом датасорсе или есть расхождения в данных логической БД между восстанавливаемым и резервными датасорсами.
db_name
-
Имя логической базы данных, данные которой восстанавливается для датасорса. Если параметр не указан, восстанавливается данные всех логических БД окружения.
recover_batch_size
-
Количество операций записи, восстанавливаемых за один проход. Если значение не указано, система восстанавливает операции записи пачками по 10 операций.
Варианты ответа
В ответе возвращается:
- объект 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
с пересозданием физических таблиц, копированием данных из автоматически выбираемых резервных датасорсов и восстановлением операций записи пачками по 20 штук:
RECOVER_DATASOURCE('adp2', true, marketing, 20)
Восстановление датасорса для всех логических БД окружения
Восстановление данных всех логических БД в датасорсе adp2
без пересоздания физических таблиц и с копированием данных из указанных резервных датасорсов adp
и adb
:
RECOVER_DATASOURCE('adp2', 'adp', 'adb')
-- или
RECOVER_DATASOURCE('adp2', 'adp', 'adb', false)
Восстановление данных всех логических БД в датасорсе adp2
с пересозданием физических таблиц, копированием данных из автоматически выбираемых резервных датасорсов и восстановлением операций записи пачками по 20 штук:
RECOVER_DATASOURCE('adp2', true, 20)