Вопрос:
При обновлении версии СМ2000 ( CM +) Генератор БД останавливается с ошибкой:
***** Documents.sql *****
Таблица изменена.
begin
*
ошибка в строке 1:
ORA-22856: невозможно добавлять столбцы к таблицам объектов
ORA-06512: на "SUPERMAG.SMINITNEWFIELD", line 11
ORA-06512: на line 2
Ответ:
I. Были изменены свойства таблиц. В Oracle 9i и выше, есть понятие сжатых таблиц. Если таблица сжатая, то добавление к ней колонок приводит к ошибке ORA-22856.
Можно попробовать отобрать сжатые таблицы запросом:
select TABLE_NAME from user_tables where compression='ENABLED';
Запрос выведет все сжатые таблицы.
Для каждой из них надо выполнить следующую команду:
alter table table_name nocompress;
II. Есть подозрение, что декомпрессия не работает в oracle 9 i .
Ранее ошибка проявлялась на таблице smdoclog и рекомендации выше не помогали.
Поэтому, чтобы решить эту проблему нужно выполнить следующее (инструкция общая на примере одной таблицы SMDOCLOG),:
Все необходимые компоненты структуры смотреть перед удалением таблицы!
Выяснить наименование скомпрессованных таблиц:
select TABLE_NAME from user_tables where compression='ENABLED';
Необходимо пересоздать скомпрессированную таблицу SMDOCLOG.
2 . Сначала необходимо сохранить имеющиеся данные:
Create table smdoclog_bak as select * from smdoclog;
3. Затем удалить таблицу SMDOCLOG:
Drop table SMDOCLOG;
4. Создать ее заново скриптом (который можно вытащить, например программой TOAD (скрипт не прилагается полностью, по причине его возможной модификации от версии к версии)):
CREATE TABLE SMDOCLOG
(
RECID NUMBER DEFAULT 0 NOT NULL,
EVENTTIME DATE DEFAULT SYSDATE NOT NULL,
DOCTYPE CHAR(2 BYTE) NOT NULL,
……………………………..…OG TO SUPERMAG_MODULE_TERMINAL;
5. Вернуть записи в таблицу SMDOCLOG:
Insert into smdoclog select * from smdoclog_bak;
Commit;
6. Удалить таблицу smdoclog_bak:
Drop table smdoclog_bak;