Ошибки_в_операциях_после_разворачивания_базы_из_дампа
На страницу Пред. 1, 2, 3, 4, 5 След.
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Programmer Участник - экстремал
Вступление в Клуб: 26.11.2014
|
Пт Дек 26, 2014 15:21   |
|
Полезность: Нет оценки
|
Random пишет: | Programmer пишет: | Дело в том что эти ошибки у меня валятся в АРМе сама база работает нормально, пакеты откомпилированы. А вот когда операционисты работают, кридитники, депозитчики. То у них как раз валятся эти ошибки.. причем когда надо вывести массово какой то список, к примеру все счета по кредитному договору, или выполнить операцию начисления процентов, ну и т.д. и т.п.(((((
Что делать с этим не пойму... |
С самого начала темы обсуждается. Дело скорее всего в идентификаторах.
Все идентификаторы всей схемы имеют один источник - сиквенс seq_id.
Иногда он используется напрямую:
insert into ...(id, ...) values(seq_id.nextval,...), иногда опосредованно через rtl.next_value('SEQ_ID');
Он сквозной, понимаешь?
1 - счёт, 2 - счёт, 3 - документ, 4 - кредит, и т.д.
Если где-то нужно уникальное значение, для идентификатора или поля для массива, оно берётся из одного и того же сиквенса.
Однако базу ты поднял из дампа и скорее всего в базе (в документах, например) появились записи с идентификаторами (или числами в полях для массивов), до которых счётчик сиквенса ещё не дошёл. Отсюда повторения значений.
Вероятность попасть на повтор значения при единичной вставке много ниже, чем если при массовой вставке значения берутся диапазоном.
А ты не можешь достать значение из сиквенса, чтобы подтвердить это предположение.
Даже чтобы накрутить значение сиквенса, тебе всё равно понадобится до него добраться.
Так что разбирайся. |
Подскажи пожалуйста что нужно для этого сделать? |
|
|
Volod Эксперт
Вступление в Клуб: 19.09.2007
|
Пт Дек 26, 2014 20:53   |
|
Полезность: Нет оценки
|
Можно проще - документы новые добавляются? У них Id - текущее значение SEQ_ID. Ищете max значение IBS.Z#IX_Z#DOCUMENT_COL9 и сравниваете.
Правда , я не уверен, что у нас одинаковые системы - напишите состав этого индекса. У меня это C_HISTORY_STATE, KEY. |
|
|
Random Эксперт
Вступление в Клуб: 27.06.2011
|
Пн Дек 29, 2014 08:23   |
|
Полезность: Нет оценки
|
Programmer пишет: | Random пишет: |
Даже чтобы накрутить значение сиквенса, тебе всё равно понадобится до него добраться.
Так что разбирайся. |
Подскажи пожалуйста что нужно для этого сделать? |
Накрутить значение сиквенса.
Нужно, чтобы select seq_id.nextval from dual
возвращал значение больше, чем select max(id) from objects;
но, опять же, увеличивать сиквенс без подтверждения того, что предположения верны... |
|
|
Programmer Участник - экстремал
Вступление в Клуб: 26.11.2014
|
Пт Янв 09, 2015 11:29   |
|
Полезность: Нет оценки
|
Ребята подскажите пожалуйста а может весь вопрос решиться путем переиндексации таблиц oracle и синонимов. Если да, то какие могут быть подводные камни в процессе реализации? Заранее благодарю за ответ. |
|
|
Alkov Профи
Вступление в Клуб: 23.09.2010
|
Пн Янв 12, 2015 03:48   |
|
Полезность: Нет оценки
|
Programmer пишет: | Ребята подскажите пожалуйста а может весь вопрос решиться путем переиндексации таблиц oracle и синонимов. Если да, то какие могут быть подводные камни в процессе реализации? Заранее благодарю за ответ. |
Думаю нет, Как связан сиквенс и переиндексация ???
Нукрути сиквенс блльше чем самый большой Id в базе... |
|
|
Programmer Участник - экстремал
Вступление в Клуб: 26.11.2014
|
Ср Янв 14, 2015 07:21   |
|
Полезность: Нет оценки
|
Alkov пишет: | Programmer пишет: | Ребята подскажите пожалуйста а может весь вопрос решиться путем переиндексации таблиц oracle и синонимов. Если да, то какие могут быть подводные камни в процессе реализации? Заранее благодарю за ответ. |
Думаю нет, Как связан сиквенс и переиндексация ???
Нукрути сиквенс блльше чем самый большой Id в базе... |
Я говорю об индексах базы данных так как все ошибки валятся именно от туда, если их анализировать. |
|
|
Random Эксперт
Вступление в Клуб: 27.06.2011
|
Ср Янв 14, 2015 08:41   |
|
Полезность: Нет оценки
|
Programmer пишет: | Alkov пишет: | Programmer пишет: | Ребята подскажите пожалуйста а может весь вопрос решиться путем переиндексации таблиц oracle и синонимов. Если да, то какие могут быть подводные камни в процессе реализации? Заранее благодарю за ответ. |
Думаю нет, Как связан сиквенс и переиндексация ???
Нукрути сиквенс блльше чем самый большой Id в базе... |
Я говорю об индексах базы данных так как все ошибки валятся именно от туда, если их анализировать. |
Блин, я умываю руки. |
|
|
Programmer Участник - экстремал
Вступление в Клуб: 26.11.2014
|
Ср Янв 14, 2015 09:32   |
|
Полезность: Нет оценки
|
Random пишет: | Programmer пишет: | Alkov пишет: | Programmer пишет: | Ребята подскажите пожалуйста а может весь вопрос решиться путем переиндексации таблиц oracle и синонимов. Если да, то какие могут быть подводные камни в процессе реализации? Заранее благодарю за ответ. |
Думаю нет, Как связан сиквенс и переиндексация ???
Нукрути сиквенс блльше чем самый большой Id в базе... |
Я говорю об индексах базы данных так как все ошибки валятся именно от туда, если их анализировать. |
Блин, я умываю руки. |
Вот и я уже месяц с этой бедой бьюсь((( |
|
|
alx Участник - экстремал
Вступление в Клуб: 29.06.2007
|
Ср Янв 14, 2015 12:07   |
|
Полезность: Нет оценки
|
накручивать нужно в меру - чтоб не превысить размерность, кажется, сейчас 16 символов для ID используются. |
|
|
Alkov Профи
Вступление в Клуб: 23.09.2010
|
Чт Янв 15, 2015 05:57   |
|
Полезность: Нет оценки
|
Programmer пишет: | Random пишет: | Programmer пишет: | Alkov пишет: | Programmer пишет: | Ребята подскажите пожалуйста а может весь вопрос решиться путем переиндексации таблиц oracle и синонимов. Если да, то какие могут быть подводные камни в процессе реализации? Заранее благодарю за ответ. |
Думаю нет, Как связан сиквенс и переиндексация ???
Нукрути сиквенс блльше чем самый большой Id в базе... |
Я говорю об индексах базы данных так как все ошибки валятся именно от туда, если их анализировать. |
Блин, я умываю руки. |
Вот и я уже месяц с этой бедой бьюсь((( |
Так не биться надо, а попробовать то что вам посоветовали
"Накрутить значение сиквенса.
Нужно, чтобы select seq_id.nextval from dual
возвращал значение больше, чем select max(id) from objects; "
Попробуйте и скажите что получилось... |
|
|
Random Эксперт
Вступление в Клуб: 27.06.2011
|
Чт Янв 15, 2015 06:17   |
|
Полезность: Нет оценки
|
alx пишет: | накручивать нужно в меру - чтоб не превысить размерность, кажется, сейчас 16 символов для ID используются. |
Ошибаетесь. number без ограничений. |
|
|
Amper Профи
Вступление в Клуб: 29.10.2010
|
Чт Янв 15, 2015 07:10   |
|
Полезность: Нет оценки
|
Random пишет: | alx пишет: | накручивать нужно в меру - чтоб не превысить размерность, кажется, сейчас 16 символов для ID используются. |
Ошибаетесь. number без ограничений. |
Ну, всё же чуть-чуть с ограничениями, хотя, чтобы уткнуться в это ограничение нужно очень сильно постараться. |
|
|
Random Эксперт
Вступление в Клуб: 27.06.2011
|
Чт Янв 15, 2015 08:30   |
|
Полезность: Нет оценки
|
Amper пишет: | Random пишет: | alx пишет: | накручивать нужно в меру - чтоб не превысить размерность, кажется, сейчас 16 символов для ID используются. |
Ошибаетесь. number без ограничений. |
Ну, всё же чуть-чуть с ограничениями, хотя, чтобы уткнуться в это ограничение нужно очень сильно постараться. |
Это понятно, что у типа number есть встроенные ограничения.
Я же имел в виду - идентификаторы объявляются как number. Без уточнений - сколько там десятичной части, сколько дробной. "number", и всё. Без ограничений.
Правда, есть исключения. Но вы с ними не столкнётесь. |
|
|
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Пт Янв 16, 2015 06:37   |
|
Полезность: Нет оценки
|
Random пишет: | alx пишет: | накручивать нужно в меру - чтоб не превысить размерность, кажется, сейчас 16 символов для ID используются. |
Ошибаетесь. number без ограничений. |
Поле methods.id заполняется все из того же seq_id.next_val() - на нашей системе имеет тип VARCHAR2(16).
Отсюда ограничение на seq_id - не больше 16 символов.
Код: | select id from methods |
|
|
|
Random Эксперт
Вступление в Клуб: 27.06.2011
|
Пт Янв 16, 2015 08:00   |
|
Полезность: Нет оценки
|
Damir пишет: | Random пишет: | alx пишет: | накручивать нужно в меру - чтоб не превысить размерность, кажется, сейчас 16 символов для ID используются. |
Ошибаетесь. number без ограничений. |
Поле methods.id заполняется все из того же seq_id.next_val() - на нашей системе имеет тип VARCHAR2(16).
Отсюда ограничение на seq_id - не больше 16 символов.
Код: | select id from methods |
|
Да, но операции не создаются интенсивно в массовом порядке на рабочей схеме даже при работе ЗОД.
Кроме того, METHODS.ID вообще не число. И то, что туда попадают значения из сиквенса (хотя на это разработчики не рассчитывали) - косяк прикладных разработчиков и душевной лени.
Уж поверь мне, я специально писал функцию подбора идентификатора для METHODS при создании новой операции. |
|
|
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|