Восстановление таблицы

Функция

Восстановление (насколько возможно) таблицы с нарушенной структурой данных.

Спецификация
   
< восстановление таблицы >::=
REBUILD TABLE [ имя схемы.]имя таблицы
[WITH {INDEXES | INDEX FILES | ALL FILES} | INDEXES ONLY]
[IGNORE LOCK]
[WAIT | NOWAIT]
Синтаксические правила
  1. < Имя таблицы > должно ссылаться на базовую таблицу.

  2. < Имя таблицы > не должно ссылаться на системную таблицу.

  3. По умолчанию используется опция WAIT.

  4. Правом на восстановление таблицы обладает ее владелец или любой другой пользователь с привилегией на модификацию структуры таблицы (ALTER) и уровнем прав доступа к БД RESOURCE.

Общие правила
  1. Исходной информацией в процессе восстановления таблицы является файл данных восстанавливаемой таблицы. На его основе происходит построение нового конвертера таблицы.

  2. После построения нового конвертера дальнейшие действия зависят от заданного модификатора команды:

    • WITH INDEXES – выполняется перестройка индексов;

    • WITH INDEX FILES – выполняется перестройка индексов и индексных файлов;

    • WITH ALL FILES – выполняется перестройка индексов, индексных файлов и файлов данных (в файлах данных очищаются страницы, в которых длина записи выходит за обозначенный размер страницы, длина записи нечетная и др. случаи).

  3. На время восстановления таблицы ядро СУБД блокирует доступ к ней других пользователей. Если блокировка восстанавливаемой таблицы невозможна (есть активные каналы, которые подали связанный с таблицей запрос и не завершили его), необходимо использовать модификатор IGNORE LOCK.

  4. Опция INDEXES ONLY заставляет перестраивать только простые и составные индексы таблицы (за исключением фразовых индексов) без восстановления соответствия адресного конвертера файлам данных (например, если утилита testdb диагностировала для этой таблицы только проблемы, относящиеся к индексам). Опция полезна тем, что для её применения не требуются знания о структуре и имени поврежденного индекса.