CftClub.ru
Клуб специалистов ЦФТ-Банк

Ошибки_в_операциях_после_разворачивания_базы_из_дампа
На страницу Пред.  1, 2, 3, 4, 5  След.
 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Настройка и сопровождение
Предыдущая тема :: Следующая тема  
Автор Сообщение
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 при создании новой операции.
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Настройка и сопровождение Часовой пояс: GMT + 3
На страницу Пред.  1, 2, 3, 4, 5  След.
Страница 3 из 5

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru