Автор: Tishka
Дата сообщения: 20.10.2003 17:01
Создаётся новая таблица, аналогичной структуры (во временном таблисном пространстве или если его нехватает, то в новом, которое потом можно будет удалить). В неё копируются данные непомерно разросшейся таблицы (можно не копировать устаревшие данные). Чиститься непомерно разросшаяйся таблица. Данные из временной таблицы возвращаются обратно (тригера нужно отключить). Временая таблица удаляется.
Чистить таблицу нужно не командой DELETE (количество записей уменьшится, а место не освободится), а командой TRUNCATE TABLE имя таблицы REUSE STORAGE. После сохранения данных, непомерно разросшуюся таблицу лучше вобще грохнуть (предварительно сохранив для последующего восстановления, данные о тригерах, индексах, внешних ключах других таблиц, ссылающихся на удаляемую таблицу). Создать таблицу заново с новыми экстентами (предварительно подсчитав, сколько же ей нужно места, с запвсом), можно в другом табличном пространстве (INITIAL определённый размер PCTINCREASE 0). Вернуть в неё данные из временной таблицы. восстановить тригера, индексы (для индексов так-же определьть необходимое место) внешние ключи других таблиц, ссылающихся на востановленную таблицу. Удалить временную таблицу. После этого перекомпилировать все хранимые в БД функции, процедуры, пакеты процедур и их тела, зависящие от этой таблицы.