14.11.2014 10:01
Troll
 
База данных Супермаг+ штатно генерируется неправильно, что приводит к рассогласованию связки индекс-constraint и ошибкам, в том числе повреждению структуры. В связи с этим был создан нижеследующий скрипт для исправления ошибок генерации БД. В связи с допущенным разработчиками косяком (непониманием ими правил создания constraint) настоятельно рекомендуется отключать все административные задания Супермага, касающиеся индексов.

Скрипт в большинстве случаев приведет к неработоспособности БД и потребует долечивания базы оптимизатором. Не запускайте, пока не поймете точно, что он делает и с какими последствиями!
Код:
DECLARE
   sql_stmt   VARCHAR2 (100);
BEGIN
   FOR c IN (select constraint_type,owner,table_name,constraint_name,index_owner,index_name from dba_constraints where index_name is not null and owner='SUPERMAG' and (index_name,index_owner) not in (select index_name,owner from dba_indexes where temporary='Y'))
   LOOP
begin
execute immediate 'alter table "'||c.owner||'"."'||c.table_name||'" disable constraint "'||c.constraint_name||'" cascade';
execute immediate 'drop index "'||c.index_owner||'"."'||c.index_name||'"';
execute immediate 'alter table "'||c.owner||'"."'||c.table_name||'" enable constraint "'||c.constraint_name||'"';
exception when others then null;
end;
   END LOOP;
END;
/
18.11.2014 12:44
bayan
 
Код:
exception when others then null;
я бы убрал...
18.11.2014 13:02
OlegON
 
я бы заменил :) если убрать, то отвалится сразу, если индекса не будет...
19.11.2014 14:21
bayan
 
Цитата:
OlegON я бы заменил :) если убрать, то отвалится сразу, если индекса не будет...
Конечно лучше exeption обрабатывать ) но не when others then null же.
19.11.2014 15:10
OlegON
 
на нормальной БД должно быть все нормально :) Потом просто посмотреть, что получится и все... Главное, чтобы чайники не запускали...
Часовой пояс GMT +3, время: 13:34.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.