Восстановление таблицы
Функция
Восстановление (насколько возможно) таблицы с нарушенной структурой данных.
Спецификация
::=
[WITH {INDEXES | INDEX FILES | ALL FILES} | INDEXES ONLY]
[IGNORE LOCK]
[WAIT | NOWAIT]
Синтаксические правила
-
< Имя таблицы >
должно ссылаться на базовую таблицу. -
< Имя таблицы >
не должно ссылаться на системную таблицу. -
По умолчанию используется опция
WAIT
. -
Правом на восстановление таблицы обладает ее владелец или любой другой пользователь с привилегией на модификацию структуры таблицы (
ALTER
) и уровнем прав доступа к БДRESOURCE
.
Общие правила
-
Исходной информацией в процессе восстановления таблицы является файл данных восстанавливаемой таблицы. На его основе происходит построение нового конвертера таблицы.
-
После построения нового конвертера дальнейшие действия зависят от заданного модификатора команды:
-
WITH INDEXES
– выполняется перестройка индексов; -
WITH INDEX FILES
– выполняется перестройка индексов и индексных файлов; -
WITH ALL FILES
– выполняется перестройка индексов, индексных файлов и файлов данных (в файлах данных очищаются страницы, в которых длина записи выходит за обозначенный размер страницы, длина записи нечетная и др. случаи).
-
-
На время восстановления таблицы ядро СУБД блокирует доступ к ней других пользователей. Если блокировка восстанавливаемой таблицы невозможна (есть активные каналы, которые подали связанный с таблицей запрос и не завершили его), необходимо использовать модификатор
IGNORE LOCK
. -
Опция
INDEXES ONLY
заставляет перестраивать только простые и составные индексы таблицы (за исключением фразовых индексов) без восстановления соответствия адресного конвертера файлам данных (например, если утилита testdb диагностировала для этой таблицы только проблемы, относящиеся к индексам). Опция полезна тем, что для её применения не требуются знания о структуре и имени поврежденного индекса.