Восстановление таблицы (REBUILD TABLE)
Функция
Восстановление (насколько возможно) таблицы с нарушенной структурой данных.
Спецификация
::=[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 диагностировала для этой таблицы только проблемы, относящиеся к индексам). Опция полезна тем, что для её применения не требуются знания о структуре и имени поврежденного индекса.