Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Проблема с SEQUENCE  [new]
Филимонов Сергей
Member

Откуда:
Сообщений: 178
В общем проблема в следующем
По непонятным мне причинам созданный мною SEQUENCE увеличивается по случаю сразу на 20 значений!! Собственно не очень приятно это видеть... По случаю имеется ввиду что при нормальной работе скажем подряд десять раз вызываю nextval отрубаю соединение подключаю заново то все работает нормально. А вот стоит отойти на часик полтора а после вытащить следующее значение то оно увеличивается на 20.

Вот код на создание сикуенса

CREATE SEQUENCE DP1.SQ_MYTABLE
START WITH 1
INCREMENT BY 1
NOMAXVALUE;

Есть предположение что в этом виноват cache он собственно единственный у кого установленно значение по умолчанию в 20
т.е. получается если скажем какие-то процессы в базе чистят этот кешь то и выходит что сл значение идет на 20 больше.
16 июн 11, 13:51    [10821742]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с SEQUENCE  [new]
Alexander Konakov
Member

Откуда:
Сообщений: 1027
Филимонов Сергей,

Вопрос где?
16 июн 11, 13:55    [10821780]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с SEQUENCE  [new]
Asmodeus
Member

Откуда: Минск
Сообщений: 543
Филимонов Сергей,

Ну это как бы задекларированное поведение:
Documentation
CACHE
Specify how many values of the sequence the database preallocates and keeps in memory for faster access. This integer value can have 28 or fewer digits. The minimum value for this parameter is 2. For sequences that cycle, this value must be less than the number of values in the cycle. You cannot cache more values than will fit in a given cycle of sequence numbers. Therefore, the maximum value allowed for CACHE must be less than the value determined by the following formula:

(CEIL (MAXVALUE - MINVALUE)) / ABS (INCREMENT)


If a system failure occurs, all cached sequence values that have not been used in committed DML statements are lost. The potential number of lost values is equal to the value of the CACHE parameter.
16 июн 11, 13:56    [10821789]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с SEQUENCE  [new]
Серафимный Шестикрыл
Member [заблокирован]

Откуда: С луны свалился
Сообщений: 2922
Филимонов Сергей
т.е. получается если скажем какие-то процессы в базе чистят этот кешь то и выходит что сл значение идет на 20 больше.


Похоже ? :)

автор
SQL> create sequence se$0

Sequence created.

SQL> select se$0.nextval from dual;

NEXTVAL
----------
1

SQL> alter system flush shared_pool
2 /

System altered.

SQL> select se$0.nextval from dual;

NEXTVAL
----------
21
16 июн 11, 13:57    [10821806]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с SEQUENCE  [new]
Серафимный Шестикрыл
Member [заблокирован]

Откуда: С луны свалился
Сообщений: 2922
Филимонов Сергей
процессы в базе чистят этот кешь


Для этого не надо ничего чистить, достаточно иметь RAC и NOORDER (например).
И потом - в чем проблема вообще ?
16 июн 11, 13:59    [10821829]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с SEQUENCE  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Филимонов Сергей,

это именно кеш. бывает, что он пробрасывается, например, когда (ай, обида) база падает.
ну или
SQL> create sequence sg_dummy_123456;

Sequence created.

SQL> select sg_dummy_123456.nextval from dual;

   NEXTVAL
----------
         1

SQL> create sequence sg_dummy_123456;
create sequence sg_dummy_123456
                *
ERROR at line 1:
ORA-00955: имя уже задействовано для существующего объекта


SQL> select sg_dummy_123456.nextval from dual;

   NEXTVAL
----------
        21
волновать разрыв в значениях, по идее, вас не должен бы.
а вот с причиной - неплохо бы разобраться
16 июн 11, 14:02    [10821862]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с SEQUENCE  [new]
Филимонов Сергей
Member

Откуда:
Сообщений: 178
Серафимный Шестикрыл
Филимонов Сергей
т.е. получается если скажем какие-то процессы в базе чистят этот кешь то и выходит что сл значение идет на 20 больше.


Похоже ? :)

автор
SQL> create sequence se$0

Sequence created.

SQL> select se$0.nextval from dual;

NEXTVAL
----------
1

SQL> alter system flush shared_pool
2 /

System altered.

SQL> select se$0.nextval from dual;

NEXTVAL
----------
21


Да да вот в принципе точное воспроизведение бага.


Вообще так понимаю это никак не лечится и поэтому решил просто отказаться от кеша что бы все номера шли по порядку(за исключением случаев при ошибочных инсертах но это уже другая история).
16 июн 11, 14:49    [10822279]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с SEQUENCE  [new]
Серафимный Шестикрыл
Member [заблокирован]

Откуда: С луны свалился
Сообщений: 2922
Филимонов Сергей
Да да вот в принципе точное воспроизведение бага.


бл*-бл*-бл*... Какого бага, любимец богов ? Тебе же ужа даже и доку привели -
это ожидаемое поведение, документированное, предсказуемое.

Филимонов Сергей
Вообще так понимаю это никак не лечится и поэтому решил просто отказаться от кеша что бы все номера шли по порядку(за исключением случаев при ошибочных инсертах но это уже другая история).


Поведай нам, что ты подразумеваешь под "номера шли по порядку" ? Они и так идут по порядку by design,
а то, что есть gaps, это - еще раз повторяю - адекватное поведение.

Ты явно не можешь сформулировать собственный concern и пытаешься решить задачу о
лечении сферического сивого мерина в квантовом вакууме, не понимая даже, что такого
в поведении означенного мерина тебя беспокоит.

Вообрази, что у тебя работают несколько процессов. Что ты тогда будешь подразумевать под порядком ?
16 июн 11, 14:59    [10822380]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с SEQUENCE  [new]
Филимонов Сергей
Member

Откуда:
Сообщений: 178
Серафимный Шестикрыл
Филимонов Сергей
Да да вот в принципе точное воспроизведение бага.


бл*-бл*-бл*... Какого бага, любимец богов ? Тебе же ужа даже и доку привели -
это ожидаемое поведение, документированное, предсказуемое.

Филимонов Сергей
Вообще так понимаю это никак не лечится и поэтому решил просто отказаться от кеша что бы все номера шли по порядку(за исключением случаев при ошибочных инсертах но это уже другая история).


Поведай нам, что ты подразумеваешь под "номера шли по порядку" ? Они и так идут по порядку by design,
а то, что есть gaps, это - еще раз повторяю - адекватное поведение.

Ты явно не можешь сформулировать собственный concern и пытаешься решить задачу о
лечении сферического сивого мерина в квантовом вакууме, не понимая даже, что такого
в поведении означенного мерина тебя беспокоит.

Вообрази, что у тебя работают несколько процессов. Что ты тогда будешь подразумевать под порядком ?



Баг был мой так как у меня собственно генерация шла с разрывами в 20 значений. То-что там все это задокументировано я уже понял И понимаю что у них другого выхода собственно не было дабы увеличить производительность...
Согласен порядок это не то слово которое стоило бы использовать
Да и вообще че придираешься к словам?
16 июн 11, 15:21    [10822579]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с SEQUENCE  [new]
Филимонов Сергей
Member

Откуда:
Сообщений: 178
Серафимный Шестикрыл,

К стати за помощь Спасибо!
16 июн 11, 15:23    [10822595]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с SEQUENCE  [new]
Серафимный Шестикрыл
Member [заблокирован]

Откуда: С луны свалился
Сообщений: 2922
Филимонов Сергей
Да и вообще че придираешься к словам?


С корректной терминологии начинается профессиональный разговор.

А свою проблему ты так и не сформулировал.

Если тебе позарез нужно, чтобы не было gaps, то никакого иного выхода, как
написание совего собственного механизма, обеспечивающего транзакционность
и unbreakable-поведение у тебя нет.
Но тут можно к бабке не ходить, что производительность такого решения не окупит
мнимые плюсы.
16 июн 11, 15:28    [10822646]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить