Форум OlegON > Программы и оборудование для автоматизации торговли > Системы автоматизации торговли > Супермаг Плюс (Супермаг 2000)

Ошибка в почтовом модуле при рассылке карточек товаров ORA-02291 : Супермаг Плюс (Супермаг 2000)

23.11.2024 9:57


07.09.2011 22:13
Связка: СМ 1.028.1 + Oracle 10g. Базы: 1 ЦО + 4 подчиненных магазина (МХ).
Процессы: С МХ операторы в терминальной сессии на ЦО создаются новые карточки товаров (карт.т.) и автоматом рассылаются на МХ + оператор на ЦО редактирует карт.т. (в.т.ч. и групповой обработкой)

Проблема: созданные на ЦО карт.т. не появляются на МХ
В почтовике ЦО куча ошибок вида: ORA-02291: нарушено ограничение целостности (SUPERMAG.SMCCARD_IDSPIRITCODE) - исходный ключ не найден

При обнаружении проблемы увидел в почтовике ЦО, что не хватает места под таблицы, через консоль Оракла создал доп. пространство как на ЦО, так и на МХ.
В почтовике ЦО переотправил (отменил и они создались заново) пакеты с ошибками.
Не помогло. Что делать дальше не представляю... ХЕЛПМИ.
07.09.2011 22:29
Также на почтовике ЦО в отправке куча пакетов в статусе создан и без отметок о ошибках. На 3 из 4МХ в почтовиках в приемке куча ошибок ORA-02291: нарушено ограничение целостности (SUPERMAG.SMCCARD_IDSPIRITCODE) - исходный ключ не найден. И только на 1 из 4МХ репликация работает.
07.09.2011 22:42
Чтобы место не кончалось в стиле "на пути канала внезапно построили дом", рекомендую поставить оптимайзер. Суть ошибки - что-то не разослал. Вариант первый - все пакеты закинуть заново из ЦО вниз и повторить эту процедуру несколько раз и сверху и снизу, пока очередь полностью не рассосется (вариант чреват боком из-за возможных обгонов старых пакетов более новыми), вариант второй - залезь в ограничения (constraints) и посмотри на что ссылается SUPERMAG.SMCCARD_IDSPIRITCODE. Я что-то не помню такого. Если сам не сообразишь - назови табличку, подскажем, для чего она. Самому лезть некогда. Если найдешь - напиши, что переразослал, чтобы последователи нашли.
07.09.2011 23:26
Цитата:
OlegON Вариант первый - все пакеты закинуть заново из ЦО вниз и повторить эту процедуру несколько раз и сверху и снизу, пока очередь полностью не рассосется (вариант чреват боком из-за возможных обгонов старых пакетов более новыми), вариант второй - залезь в ограничения (constraints) и посмотри на что ссылается SUPERMAG.SMCCARD_IDSPIRITCODE
1. не понял. заново разослать карт.т. (smcard)? или имеется ввиду переотсылка уже висящих в отправке пакетов в статусе создан с отметками ошибка и с отметками без ошибок.
2. constraints SUPERMAG.SMCCARD_IDSPIRITCODE -
smcard.saspiritcode <--> saspiritcode.id (доп. алгокольный классификатор для отчетности - реалии РБ). Вчера днем создавал (выполнял sql скрипты) на ЦО и всех МХ. Репликация работала до момента нехватки места в базах. Сегодня оператор на ЦО заполнял этот класификатор пользуясь групповой обработкой ---> вероятно рассылка шла большая ---> забилось место в базах.
Что сейчас править не соображу.
07.09.2011 23:53
косяк обнаружил:
на ЦО и 1 беспроблемном МХ - таблица saspiritcode заполнена одинаково,
а на 3 промлемных МХ - таблица пустая.
сейчас при повторном запуске скриптов по созданию этого класификатора на проблемных МХ почемуто не заполняется saspiritcode (и скрипт вроде простой)
Цитата:
update supermag.smcard
set supermag.smcard.IDSpiritCode = null;

delete from SASpiritCode;
create or replace procedure LoadSpiritCode is
procedure InsTbl(
id in SASpiritCode.Id%type,
Code in SASpiritCode.Code%type,
Title in SASpiritCode.Title%type
) is
begin
insert into SASpiritCode
(ID, Code, Title)
values (ID, Code, Title);
end;
begin
-- Продовольственные товары
InsTbl(1, '1', 'Водка');
InsTbl(2, '2', 'Ликеро-водочные изделия');
InsTbl(3, '3', 'Вина виноградные');
InsTbl(4, '4', 'Напитки винные виноградные');
InsTbl(5, '5', 'Вина плодово-ягодные');
InsTbl(6, '6', 'Напитки винные плодово-ягодные');
InsTbl(7, '7', 'Шампанское, вина игристые');
InsTbl(8, '8', 'Коньяк');
InsTbl(9, '9', 'Бренди');
end;
/
begin
LoadSpiritCode;
end;
/
drop procedure LoadSpiritCode;
commit;
08.09.2011 07:22
А разослать этот справочник из ЦО нельзя?
08.09.2011 07:36
А что это за код духа?
08.09.2011 07:57
Цитата:
Zhalex косяк обнаружил:
на ЦО и 1 беспроблемном МХ - таблица saspiritcode заполнена одинаково,
а на 3 промлемных МХ - таблица пустая.
сейчас при повторном запуске скриптов по созданию этого класификатора на проблемных МХ почемуто не заполняется saspiritcode (и скрипт вроде простой)
Цитата:
update supermag.smcard
set supermag.smcard.IDSpiritCode = null;

delete from SASpiritCode;
create or replace procedure LoadSpiritCode is
procedure InsTbl(
id in SASpiritCode.Id%type,
Code in SASpiritCode.Code%type,
Title in SASpiritCode.Title%type
) is
begin
insert into SASpiritCode
(ID, Code, Title)
values (ID, Code, Title);
end;
begin
-- Продовольственные товары
InsTbl(1, '1', 'Водка');
InsTbl(2, '2', 'Ликеро-водочные изделия');
InsTbl(3, '3', 'Вина виноградные');
InsTbl(4, '4', 'Напитки винные виноградные');
InsTbl(5, '5', 'Вина плодово-ягодные');
InsTbl(6, '6', 'Напитки винные плодово-ягодные');
InsTbl(7, '7', 'Шампанское, вина игристые');
InsTbl(8, '8', 'Коньяк');
InsTbl(9, '9', 'Бренди');
end;
/
begin
LoadSpiritCode;
end;
/
drop procedure LoadSpiritCode;
commit;
Этот код может не выполняться, если в структуре таблиц базы данных нет таблицы SASpiritCode.
Где-то еще должен быть скрипт на её создание.
08.09.2011 07:58
Цитата:
Zhalex ...сейчас при повторном запуске скриптов по созданию этого класификатора на проблемных МХ почемуто не заполняется saspiritcode (и скрипт вроде простой)
ты его из под пользователя supermag запускаешь?
08.09.2011 08:02
и что скажет, если сделать просто
Код:
insert into SASpiritCode (Id,Code,Title) values(1, '1', 'Водка');
commit;
?
Часовой пояс GMT +3, время: 09:57.

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