Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 ORA-02291 Нехватает записи,как ее добавить.Помогите плиз решить проблему.  [new]
DimonSP
Member

Откуда: Днепропетровск
Сообщений: 112
Добрый день!

Есть ERP система которая крутиться на ORACLE 11g под WinServer 2003.

При фин. проводке программа выдает ошибку ORA-02291: integrity constraint (DBO.YFKMONEYDRIVE_IPARENTID) violated - parent key not found
ORA-06512: at line 2
гугление привело к одному ,что не хватает записи.Какой и где я не совсем понял,как ее добавить естественно тоже не знаю.
Помогите плиз решить проблему.
Ниже представил полностью текст ошибки.

+(ORA-02291)
( Класс ошибки: EDatabaseError )
ORA-02291: integrity constraint (DBO.YFKMONEYDRIVE_IPARENTID) violated - parent key not found
ORA-06512: at line 2


4.1.0.441
begin
insert into MoneyDrive ( IMONEYSTATEID
, DTPLAT
, VCNUMPP
, IPARENTID
, IDRIVENUM
, DTREALENTER
, DTENTER
, IMONEYDRIVETYPEID
, IDOCUMENTID_TRG
, IDOCUMENTID_SRC
, ISTAFFID_ENTER
, IMONEYDRIVEID
, DECNDS
, DECSUM_TRG
, ICURRENCYID_TRG
, ICURRENCYID_SRC
, DECSUM_SRC
, DTGRUZ
, VCNUMGP
, VCNaznachenie ,DTPLANDAY,iDaysToPay
)values
(:IMONEYSTATEID
,:DTPLAT
,:VCNUMPP
,:IPARENTID
,:IDRIVENUM
,SYSDATE
,nvl(:dtEnter,sysdate)
,:IMONEYDRIVETYPEID
,:IDOCUMENTID_TRG
,:IDOCUMENTID_SRC,
GetUserID
,:IMONEYDRIVEID
,:DECNDS
,:DECSUM_TRG
,:ICURRENCYID_TRG
,:ICURRENCYID_SRC
,:DECSUM_SRC
,:DTGRUZ
,:VCNUMGP
,:VCNaznachenie,:dtplanday,:idaystopay);

CheckMoneysum(:iDocumentID_Src,'insmd_document_src' );
CheckMoneysum(:iDocumentID_Trg,'insmd_document_trg' );

begin
IF :IMONEYSTATEID = 2 THEN
select COUNT(*) INTO :CNT from moneydrive e
where e.imoneydrivetypeid = :imoneydrivetypeid
AND(e.idocumentid_src = :iDocumentID_Owner or e.idocumentid_trg = :iDocumentID_Owner)
and e.imoneystateid = 2;
IF (:CNT = 1) THEN
SELECT :DTENTER - MIN(E.DTENTER) INTO :DELTA FROM moneydrive e
where (e.idocumentid_src = :iDocumentID_Owner or e.idocumentid_trg = :iDocumentID_Owner)
and imoneydrivetypeid = :imoneydrivetypeid
and imoneystateid <> 2 ;

update moneydrive e set dtenter = dtenter+:DELTA
where (e.idocumentid_src = :iDocumentID_Owner or e.idocumentid_trg = :iDocumentID_Owner)
and imoneydrivetypeid = :imoneydrivetypeid
and imoneystateid <> 2;
END IF;
END IF;
END;


end;

----- Параметры -----
:IMONEYSTATEID = 2
:DTPLAT =
:VCNUMPP =
:IPARENTID = 1
:IDRIVENUM =
:DTENTER = 07.08.2013 16:38:54
:IMONEYDRIVETYPEID = 22
:IDOCUMENTID_TRG = 9885
:IDOCUMENTID_SRC = 9871
:IMONEYDRIVEID = 131
:DECNDS =
:DECSUM_TRG = 406,96
:ICURRENCYID_TRG = 1
:ICURRENCYID_SRC = 1
:DECSUM_SRC = 406,96
:DTGRUZ =
:VCNUMGP =
:VCNAZNACHENIE =
:DTPLANDAY =
:IDAYSTOPAY =
:IDOCUMENTID_OWNER = 9871
:CNT =
:DELTA =
---------------------
7 авг 13, 18:14    [14677528]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02291 Нехватает записи,как ее добавить.Помогите плиз решить проблему.  [new]
Rinka777
Member

Откуда:
Сообщений: 668
Посмотреть констрейн YFKMONEYDRIVE_IPARENTID в таблице user_constraints
какая вторая таблица.
7 авг 13, 18:32    [14677617]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02291 Нехватает записи,как ее добавить.Помогите плиз решить проблему.  [new]
DimonSP
Member

Откуда: Днепропетровск
Сообщений: 112
Rinka777
Посмотреть констрейн YFKMONEYDRIVE_IPARENTID в таблице user_constraints
какая вторая таблица.


Если чесно я не совсем знаю как это сделать,это нужно просто зайти в директорию посмотреть ,что там? Или как?
Если можно подробнее или куда копать нужно?
7 авг 13, 18:38    [14677653]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02291 Нехватает записи,как ее добавить.Помогите плиз решить проблему.  [new]
Rinka777
Member

Откуда:
Сообщений: 668
вероятно таблица PARENT или IPARENT с ключом IPARENTID = 1
вероятно эту запись удалили.
это есть плюсом не владеете
7 авг 13, 19:05    [14677785]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02291 Нехватает записи,как ее добавить.Помогите плиз решить проблему.  [new]
Lecter
Member

Откуда: Киев
Сообщений: 2032
DimonSP,

А что не понятно то? Как посмотреть констрейт или что?
Не найден ключ в родительской таблице на которую вы из дочерной пытаетесь инсертить.
7 авг 13, 19:29    [14677873]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02291 Нехватает записи,как ее добавить.Помогите плиз решить проблему.  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 10784
... или перепутан порядок и потомков вставляют раньше предков.
Поэтому - в техподдержку системы и делать, что скажут.
7 авг 13, 19:35    [14677897]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02291 Нехватает записи,как ее добавить.Помогите плиз решить проблему.  [new]
suPPLer
Member

Откуда: Харків, Україна
Сообщений: 7794
Блог
Rinka777
Посмотреть констрейн YFKMONEYDRIVE_IPARENTID в таблице user_constraints
какая вторая таблица.
DimonSP
Если чесно я не совсем знаю как это сделать,это нужно просто зайти в директорию посмотреть ,что там? Или как?


You've made my day!

Нужно выполнить запрос к таблице ALL_CONSTRAINTS и посмотреть, на какой объект ссылается внешний ключ DBO.YFKMONEYDRIVE_IPARENTID. Выполнить его можно в SQL*Plus, но уровень вопросов предполагает, что его поиск и запуск будет отдельным приключением. Потому найдите что-нибудь из этого, запустите, подключитесь к БД и выполните:

select r_owner owner
     , (select table_name from all_constraints c2 where c.r_owner = owner and c.r_constraint_name = c2.constraint_name) table_name
  from all_constraints c
 where owner = 'DBO' and constraint_name = 'YFKMONEYDRIVE_IPARENTID'
/
7 авг 13, 19:41    [14677917]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02291 Нехватает записи,как ее добавить.Помогите плиз решить проблему.  [new]
DimonSP
Member

Откуда: Днепропетровск
Сообщений: 112
suPPLer
Rinka777
Посмотреть констрейн YFKMONEYDRIVE_IPARENTID в таблице user_constraints
какая вторая таблица.
DimonSP
Если чесно я не совсем знаю как это сделать,это нужно просто зайти в директорию посмотреть ,что там? Или как?


You've made my day!

Нужно выполнить запрос к таблице ALL_CONSTRAINTS и посмотреть, на какой объект ссылается внешний ключ DBO.YFKMONEYDRIVE_IPARENTID. Выполнить его можно в SQL*Plus, но уровень вопросов предполагает, что его поиск и запуск будет отдельным приключением. Потому найдите что-нибудь из этого, запустите, подключитесь к БД и выполните:

select r_owner owner
     , (select table_name from all_constraints c2 where c.r_owner = owner and c.r_constraint_name = c2.constraint_name) table_name
  from all_constraints c
 where owner = 'DBO' and constraint_name = 'YFKMONEYDRIVE_IPARENTID'
/



На самом деле SQL*PLUS я знаком ,но не на слишком высоком уровне,с некоторыми проблемами через терминал боролся.Но как выполнить запрос к таблие не знаю.Если можно более подробно,и что именно я должен увидеть?

P.S.Не серчайте за малограмотность в построении вопросов
7 авг 13, 21:13    [14678170]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02291 Нехватает записи,как ее добавить.Помогите плиз решить проблему.  [new]
suPPLer
Member

Откуда: Харків, Україна
Сообщений: 7794
Блог
DimonSP
Но как выполнить запрос к таблие не знаю.

Я привёл выше пример запроса к таблице. Нужно скопировать его и вставить в окно с SQL*Plus, подключившись к БД. Запрос вернёт владельца и имя таблицы, в которой не хватает записи.
7 авг 13, 21:21    [14678186]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02291 Нехватает записи,как ее добавить.Помогите плиз решить проблему.  [new]
Lecter
Member

Откуда: Киев
Сообщений: 2032
DimonSP
[
На самом деле SQL*PLUS я знаком ,но не на слишком высоком уровне,с некоторыми проблемами через терминал боролся.Но как выполнить запрос к таблие не знаю.Если можно более подробно,и что именно я должен увидеть?

P.S.Не серчайте за малограмотность в построении вопросов


Позвоните лучше в службу поддержки. Если вы не знаете как сделать выборку то лучше ничего не вставлять тем более не понимая что там в кишках. ИМХО конечно.
7 авг 13, 21:46    [14678236]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02291 Нехватает записи,как ее добавить.Помогите плиз решить проблему.  [new]
-2-
Member

Откуда:
Сообщений: 15330
Lecter
Позвоните лучше в службу поддержки. Если вы не знаете как ...
то сначала на курсы звонков в поддержку.
8 авг 13, 00:29    [14678741]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02291 Нехватает записи,как ее добавить.Помогите плиз решить проблему.  [new]
DimonSP
Member

Откуда: Днепропетровск
Сообщений: 112
Тех поддержка исключена потому как она платная,а контракт заключается на год.Поэтому попрошу не давать советы типа "Обратитесь в ТП" и вообще перестаньте думать.Спасибо, буду пробовать с SQL*PLUS разбираться.
8 авг 13, 08:07    [14679032]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02291 Нехватает записи,как ее добавить.Помогите плиз решить проблему.  [new]
-2-
Member

Откуда:
Сообщений: 15330
DimonSP
и вообще перестаньте думать
результат этого совета стал причиной данного топика. отказаться от поддержки, нанять клоуна за полкопейки и надеяться на светлое будущее.
8 авг 13, 08:15    [14679045]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02291 Нехватает записи,как ее добавить.Помогите плиз решить проблему.  [new]
DimonSP
Member

Откуда: Днепропетровск
Сообщений: 112
и нанять клоуна за полкопейки и надеяться на светлое будущее.


Так надейтесь на светлое будущее ,все в ваших руках.Спасибо за внимание!
8 авг 13, 08:22    [14679061]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02291 Нехватает записи,как ее добавить.Помогите плиз решить проблему.  [new]
DimonSP
Member

Откуда: Днепропетровск
Сообщений: 112
+ еще нужно уважать окружающих.
8 авг 13, 08:24    [14679067]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02291 Нехватает записи,как ее добавить.Помогите плиз решить проблему.  [new]
DimonSP
Member

Откуда: Днепропетровск
Сообщений: 112
suPPLer
DimonSP
Но как выполнить запрос к таблие не знаю.

Я привёл выше пример запроса к таблице. Нужно скопировать его и вставить в окно с SQL*Plus, подключившись к БД. Запрос вернёт владельца и имя таблицы, в которой не хватает записи.


Спасибо буду пробовать,в любом случае у меня бэкапяться каждый день все контрол файлы ,пвд и т.д.так что если что не так бэкапну.
8 авг 13, 08:29    [14679078]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02291 Нехватает записи,как ее добавить.Помогите плиз решить проблему.  [new]
inred
Member

Откуда:
Сообщений: 41
DimonSP
+ еще нужно уважать окружающих.

Зря обижаетесь, Вам дело говорят.
Кроме того, никогда нельзя быть на 100% уверенным, к чему может привести вот такой прямой инсерт в БД, когда имеете дело с коробочным приложением.
И бэкап контрол-файлов тут не при чем =)
8 авг 13, 08:36    [14679086]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02291 Нехватает записи,как ее добавить.Помогите плиз решить проблему.  [new]
DimonSP
Member

Откуда: Днепропетровск
Сообщений: 112
inred
DimonSP
+ еще нужно уважать окружающих.

Зря обижаетесь, Вам дело говорят.
Кроме того, никогда нельзя быть на 100% уверенным, к чему может привести вот такой прямой инсерт в БД, когда имеете дело с коробочным приложением.
И бэкап контрол-файлов тут не при чем =)


На самом деле я не обижаюсь,просто некоторым товарищам нужно более корректно относиться к другим.Если я не разбираюсь в БД это не о чем не говорит,поэтому ненужно предполагать кто тут и ,что из себя представляет.
8 авг 13, 08:43    [14679121]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02291 Нехватает записи,как ее добавить.Помогите плиз решить проблему.  [new]
DimonSP
Member

Откуда: Днепропетровск
Сообщений: 112
[quot inred]
DimonSP
И бэкап контрол-файлов тут не при чем =)


Я просто имел ввиду ,что у меня бэкапиться все ,что нужно.В случае чего можно решить проблему.
8 авг 13, 08:46    [14679128]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02291 Нехватает записи,как ее добавить.Помогите плиз решить проблему.  [new]
-2-
Member

Откуда:
Сообщений: 15330
DimonSP
Если я не разбираюсь в БД это не о чем не говорит
Это говорит о том, что ты занимаешься не своим делом. Мое высказываение относится к тому, кто принимает решения отказаться от официальной поддержки (или украсть продукт) и не нанять неофициальную поддержку в виде грамотного специалиста. Ну а назвать клоуном того, кто соглашается поковырять пациента скальпелем, даже не полистав хирургически вестник, - очень толерантный эпитет.
8 авг 13, 09:10    [14679200]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02291 Нехватает записи,как ее добавить.Помогите плиз решить проблему.  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54398
Я знаю людей, которые даже своих задач не знают
И постоянно тыкают скальпелем налево и направо
8 авг 13, 09:26    [14679246]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02291 Нехватает записи,как ее добавить.Помогите плиз решить проблему.  [new]
Amberit
Member

Откуда: Киев
Сообщений: 765
DimonSP,

Если позволишь, дам тебе один совет. Думаю, ты и так знаешь, но на всякий случай напомню: аккуратно логгируй все DML-операции, которые ты производишь с "черным ящиком". Судя по твоим постам, ты понятия не имеешь о причинах ошибки и о том, как ее устранять, и у меня складывается впечатление, что собираешься решать проблему методом "попробую что здесь насоветуют/что прийдет в голову, авось взлетит". ИМХО - в 99% косяки вылезут если не сразу, то в момент построения ежедневного/ежемесячного/ежегодного баланса. А если такие "пассы скальпелем" будут неконтролируемые/нелоггируемые, то ошибки "коробки" соединятся с твоими ошибками, и получится вообще гремучая смесь...

Идеальное решение, конечно же, обратиться к поддержке. Думаю, там можно будет договориться с ценой решения конкретно этой проблемы. Если этот вариант 100% закрыт - то нужно разобраться в причинах ошибки (до той степени, чтобы ты понимал, как ее можно воспроизвести и почему она происходит). И только после этого - что-то делать на уровне БД. К этому времени, я думаю, ту уже и сам поймешь, что необходимо сделать в терминах БД.

И еще один совет - не нервничать, не торопиться, не предпринимать никаких действий с БД до полного понимания того, что же ты делаешь. Если пойдешь на поводу бизнесов/аналитиков, которые нависают и торопят ("все пропало, сделай же что-нибудь!") - гарантированно получишь еще бОльший геморрой в будущем...
8 авг 13, 10:49    [14679722]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02291 Нехватает записи,как ее добавить.Помогите плиз решить проблему.  [new]
DimonSP
Member

Откуда: Днепропетровск
Сообщений: 112
Amberit
DimonSP,

Если позволишь, дам тебе один совет. Думаю, ты и так знаешь, но на всякий случай напомню: аккуратно логгируй все DML-операции, которые ты производишь с "черным ящиком". Судя по твоим постам, ты понятия не имеешь о причинах ошибки и о том, как ее устранять, и у меня складывается впечатление, что собираешься решать проблему методом "попробую что здесь насоветуют/что прийдет в голову, авось взлетит". ИМХО - в 99% косяки вылезут если не сразу, то в момент построения ежедневного/ежемесячного/ежегодного баланса. А если такие "пассы скальпелем" будут неконтролируемые/нелоггируемые, то ошибки "коробки" соединятся с твоими ошибками, и получится вообще гремучая смесь...

Идеальное решение, конечно же, обратиться к поддержке. Думаю, там можно будет договориться с ценой решения конкретно этой проблемы. Если этот вариант 100% закрыт - то нужно разобраться в причинах ошибки (до той степени, чтобы ты понимал, как ее можно воспроизвести и почему она происходит). И только после этого - что-то делать на уровне БД. К этому времени, я думаю, ту уже и сам поймешь, что необходимо сделать в терминах БД.

И еще один совет - не нервничать, не торопиться, не предпринимать никаких действий с БД до полного понимания того, что же ты делаешь. Если пойдешь на поводу бизнесов/аналитиков, которые нависают и торопят ("все пропало, сделай же что-нибудь!") - гарантированно получишь еще бОльший геморрой в будущем...


Спасибо за совет!Я скажу так,я на авось ничего не делаю,почему происходит ошибка только предпологаю на 100% не уверен,вот поэтому создал тему что-бы выяснить в чем проблема,я имею ввиду может кто-то натолкнул бы на мысль.
8 авг 13, 11:43    [14680146]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02291 Нехватает записи,как ее добавить.Помогите плиз решить проблему.  [new]
Gustly
Member

Откуда:
Сообщений: 1426
DimonSP,

Если с программой работаете только вы, можно временно отключить констрейнт и вставить через Вашу программу проблемную строку, и посмотреть ее, если это поможет и не навредит логике - наличие такой строки.
8 авг 13, 12:22    [14680434]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02291 Нехватает записи,как ее добавить.Помогите плиз решить проблему.  [new]
DimonSP
Member

Откуда: Днепропетровск
Сообщений: 112
Gustly
DimonSP,

Если с программой работаете только вы, можно временно отключить констрейнт и вставить через Вашу программу проблемную строку, и посмотреть ее, если это поможет и не навредит логике - наличие такой строки.


В том то и проблема ,что работает вся фирма в этой программе.
8 авг 13, 12:25    [14680455]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить