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

В одном из многочисленных "ководств" читаю:
http://mab.h1.ru/APP/7013app2.htm

Пункт "2-18 Руководство разработчика приложений".
автор
Кэшированные номера последовательности могут быть также
пропущены или дублированы после экспорта и импорта, если
транзакции продолжают обращаться к номерам последовательности
одновременно с выполнением экспорта.

Объясните, если нетрудно: выделенное - буйная фантазия автора или так действительно может случиться ?
23 май 12, 15:33    [12602271]     Ответить | Цитировать Сообщить модератору
 Re: Кеширование последовательностей: могут ли быть выданы... дубли ?!?  [new]
stax..
Guest
Офигевающий читатель
Всем привет.

В одном из многочисленных "ководств" читаю:
http://mab.h1.ru/APP/7013app2.htm

Пункт "2-18 Руководство разработчика приложений".
автор
Кэшированные номера последовательности могут быть также
пропущены или дублированы после экспорта и импорта, если
транзакции продолжают обращаться к номерам последовательности
одновременно с выполнением экспорта.

Объясните, если нетрудно: выделенное - буйная фантазия автора или так действительно может случиться ?

дубли-НЕТ (без имхо)

дырки-да

.....
stax
23 май 12, 15:53    [12602516]     Ответить | Цитировать Сообщить модератору
 Re: Кеширование последовательностей: могут ли быть выданы... дубли ?!?  [new]
оригинал
Guest
http://docs.oracle.com/cd/A57673_01/DOC/server/doc/ADG73/ch4.htm#index0282
Cached sequence numbers also could be skipped after an export and import ...
23 май 12, 15:58    [12602560]     Ответить | Цитировать Сообщить модератору
 Re: Кеширование последовательностей: могут ли быть выданы... дубли ?!?  [new]
Дядя Коля
Guest
Офигевающий читатель
Объясните, если нетрудно: выделенное - буйная фантазия автора или так действительно может случиться ?


Может быть и бывает часто.
Обрати внимание, что имеются в виду не сохраненные в базу значения, а ново-генерируемые.

Будут генерироваться новые значения как дубли - да
Будут записыватьться эти дубли в базу - нет
Когда приложение примет в работу повторный сиквенс и попытается вставить - возможна исключительная ситуация (более того, такой номер значения в таблице уже может быть)
Само значение cache не значит, что эти сиквенсы уже приняты в работу.

Сделать бы тест-кейс, да влом много писать.

Сделай таблицу и свяжи с сиквенсом.
Сделай 10 вставок в таблицу
Сделай экспорт сиквенса
Сделай 10 вставок
Сделай экспорт таблицы
Удали таблицу и сиквенс
Импортируй таблицу и сиквенс
сделай вставку

много известные жалобы на пример Next value of the sequence is lower than the already used value

Вкратце, автор прав, просто ты неточно понял им сказанное.
23 май 12, 17:32    [12603396]     Ответить | Цитировать Сообщить модератору
 Re: Кеширование последовательностей: могут ли быть выданы... дубли ?!?  [new]
stax..
Guest
Дядя Коля,

если так рассуждать, то можно проще сказать
удалили/изменили/создали последовательность вот тебе дубли

или скажем создали последовательность с CYCLE, тож дубли

наскоко я понял речь идет о
автор
Кэшированные номера последовательности могут быть также
пропущены или дублированы после экспорта и импорта


кеширование никакого отношение к дублированию не имеет,
если при использовании последовательности полезли дубли, причина не в кешировани а в другом

.....
stax
23 май 12, 17:45    [12603463]     Ответить | Цитировать Сообщить модератору
 Re: Кеширование последовательностей: могут ли быть выданы... дубли ?!?  [new]
Edward Shevtsov
Member

Откуда: Moscow
Сообщений: 13469
Офигевающий читатель,

все что попало в SGA может быть утеряно.
Зачем вы читаете левые руководства?
23 май 12, 17:55    [12603522]     Ответить | Цитировать Сообщить модератору
 Re: Кеширование последовательностей: могут ли быть выданы... дубли ?!?  [new]
Дядя Коля
Guest
stax ...
stax..
кеширование никакого отношение к дублированию не имеет,
если при использовании последовательности полезли дубли, причина не в кешировани а в другом


Выше я уже обьяснил что написано в доке.

Не обязательно цепляться за слово "дубли", "дублирование"...
достаточно сказать - повторно генерируемые значения

Хотя, с оглядки на значения, которые были сгенерированы до экспорта это действительно дубли - значения генерятся повторно (с оглядки на то, что сиквенс откачен)

Если колбасит слово "дубли" - лады, тогда читай: "значения, которые ранее уже были в базе сгенерены повторно".

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

Так что автор, как видишь, прав, как бы ты ни пытался превратно интерпритировать его слова..
23 май 12, 17:56    [12603523]     Ответить | Цитировать Сообщить модератору
 Re: Кеширование последовательностей: могут ли быть выданы... дубли ?!?  [new]
-2-
Member

Откуда:
Сообщений: 15330
Дядя Коля
Сделай таблицу и свяжи с сиквенсом
косноязычных капитанов понабежало.

стоило бы все-таки уточнить "номера могут быть дублированы" и при чем тут вообще сиквенсы?!!
23 май 12, 18:22    [12603726]     Ответить | Цитировать Сообщить модератору
 Re: Кеширование последовательностей: могут ли быть выданы... дубли ?!?  [new]
stax..
Guest
Дядя Коля
stax ...
stax..
кеширование никакого отношение к дублированию не имеет,
если при использовании последовательности полезли дубли, причина не в кешировани а в другом


Выше я уже обьяснил что написано в доке.

Не обязательно цепляться за слово "дубли", "дублирование"...
достаточно сказать - повторно генерируемые значения

Хотя, с оглядки на значения, которые были сгенерированы до экспорта это действительно дубли - значения генерятся повторно (с оглядки на то, что сиквенс откачен)

Если колбасит слово "дубли" - лады, тогда читай: "значения, которые ранее уже были в базе сгенерены повторно".

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

Так что автор, как видишь, прав, как бы ты ни пытался превратно интерпритировать его слова..

в чем прав? что после импорта возможны дубли, так я об етои и не спорю

ипортнули, ето по сути пересоздали с номером на момент експорта с учетом cache

я говорю что кеширование тут нипричем
и ничего я не пытаюсь интерпретировать, генерация дублей никого отношеня к кешированию не имеет, а вот к дыркам может иметь

самой простой пример генерации дублей ето alter sequence ....

.....
stax
23 май 12, 18:55    [12603912]     Ответить | Цитировать Сообщить модератору
 Re: Кеширование последовательностей: могут ли быть выданы... дубли ?!?  [new]
Edward Shevtsov
Member

Откуда: Moscow
Сообщений: 13469
stax..,

через alter ты не сможешь сбросить счетчик, только через пересоздание. Ну вариант CYCLE/NOCYCLE не будем рассматривать.
23 май 12, 19:41    [12604084]     Ответить | Цитировать Сообщить модератору
 Re: Кеширование последовательностей: могут ли быть выданы... дубли ?!?  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Edward Shevtsov
stax..,

через alter ты не сможешь сбросить счетчик, только через пересоздание. Ну вариант CYCLE/NOCYCLE не будем рассматривать.

почему? вполне вменяемый и легко реализуемый алгоритм.
уж лучше, имхо, чем права восстанавливать и хранимый код пересобирать
23 май 12, 19:48    [12604127]     Ответить | Цитировать Сообщить модератору
 Re: Кеширование последовательностей: могут ли быть выданы... дубли ?!?  [new]
Edward Shevtsov
Member

Откуда: Moscow
Сообщений: 13469
orawish
Edward Shevtsov
stax..,

через alter ты не сможешь сбросить счетчик, только через пересоздание. Ну вариант CYCLE/NOCYCLE не будем рассматривать.

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


зачем вообще может понадобится создавать дубли? Есть практическое применение этому? На вскидку какой-ть практический пример?
23 май 12, 19:53    [12604156]     Ответить | Цитировать Сообщить модератору
 Re: Кеширование последовательностей: могут ли быть выданы... дубли ?!?  [new]
-2-
Member

Откуда:
Сообщений: 15330
Edward Shevtsov
через alter ты не сможешь сбросить счетчик, только через пересоздание. Ну вариант CYCLE/NOCYCLE не будем рассматривать.
речь ведь про повтор значений, а не про сброс счетчика. это несколько расширяет варианты...
23 май 12, 20:00    [12604201]     Ответить | Цитировать Сообщить модератору
 Re: Кеширование последовательностей: могут ли быть выданы... дубли ?!?  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Edward Shevtsov
orawish
пропущено...

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


зачем вообще может понадобится создавать дубли? Есть практическое применение этому? На вскидку какой-ть практический пример?

вообще, желание сбросить счётчик не всегда имеет целью создавать дубли.
ну а если таки про дубли говорить, то, да. практический пример - любая карусель.
например, сброс номеров ~документов каждый новый год/квартал
23 май 12, 20:05    [12604238]     Ответить | Цитировать Сообщить модератору
 Re: Кеширование последовательностей: могут ли быть выданы... дубли ?!?  [new]
stax..
Guest
Edward Shevtsov
stax..,

через alter ты не сможешь сбросить счетчик, только через пересоздание. Ну вариант CYCLE/NOCYCLE не будем рассматривать.

почему нет, тема древняя
https://www.sql.ru/forum/actualthread.aspx?bid=3&tid=127385

главный плюс не слетают права

  1* select s.nextval from dept
SQL> /

   NEXTVAL
----------
       220
       221
       222
       223

SQL> alter sequence s increment by -1;

Sequence altered.

SQL> select s.nextval from dept;

   NEXTVAL
----------
       222
       221
       220
       219

SQL>


.....
stax
23 май 12, 20:27    [12604311]     Ответить | Цитировать Сообщить модератору
 Re: Кеширование последовательностей: могут ли быть выданы... дубли ?!?  [new]
Edward Shevtsov
Member

Откуда: Moscow
Сообщений: 13469
stax..,

ну честно говоря до таких извратов я не доходил ) Как то это все не очень красиво выглядит субъективно.
23 май 12, 21:28    [12604545]     Ответить | Цитировать Сообщить модератору
 Re: Кеширование последовательностей: могут ли быть выданы... дубли ?!?  [new]
Edward Shevtsov
Member

Откуда: Moscow
Сообщений: 13469
orawish
Edward Shevtsov
пропущено...


зачем вообще может понадобится создавать дубли? Есть практическое применение этому? На вскидку какой-ть практический пример?

вообще, желание сбросить счётчик не всегда имеет целью создавать дубли.
ну а если таки про дубли говорить, то, да. практический пример - любая карусель.
например, сброс номеров ~документов каждый новый год/квартал
это к вопросу дизайна. Теряем возможность извлечь уникальный документ по его номеру. Обычно такие пожелания идут вкупе с "обязательно строго последовательно" и т.п.
23 май 12, 21:32    [12604571]     Ответить | Цитировать Сообщить модератору
 Re: Кеширование последовательностей: могут ли быть выданы... дубли ?!?  [new]
stax..
Guest
Edward Shevtsov
stax..,

ну честно говоря до таких извратов я не доходил ) Как то это все не очень красиво выглядит субъективно.

в алтере нет(не было) возможности поменять текущее значение,
поетому ПРИХОДИЛОСЬ через изврат,
грохать и создавать не хотелось из-за слета прав и инвалидации обектов

ps
изврат реально используется

но етой темке речь идет об связи кеширования и появлением (генерацией) дублей

.....
stax
23 май 12, 21:36    [12604579]     Ответить | Цитировать Сообщить модератору
 Re: Кеширование последовательностей: могут ли быть выданы... дубли ?!?  [new]
stax..
Guest
Edward Shevtsov
orawish
пропущено...

вообще, желание сбросить счётчик не всегда имеет целью создавать дубли.
ну а если таки про дубли говорить, то, да. практический пример - любая карусель.
например, сброс номеров ~документов каждый новый год/квартал
это к вопросу дизайна. Теряем возможность извлечь уникальный документ по его номеру. Обычно такие пожелания идут вкупе с "обязательно строго последовательно" и т.п.

не всегда,
напр неудобно номер слишком большой, и сбрасываем в начале года

но конешно и в вопросах дизайна також,
напр система покупная и не предусматривает "желаемую" номерацию
.....
stax
23 май 12, 21:40    [12604600]     Ответить | Цитировать Сообщить модератору
 Re: ORA-30657: operation not supported on external organized table  [new]
Hwm
Guest
Офигевающий читатель
автор
могут быть также пропущены или дублированы после экспорта и импорта,


stax..
дубли-НЕТ (без имхо)


stax..
что после импорта возможны дубли, так я об етои и не спорю


Сложно понять того, кто сам себя не понимает.
23 май 12, 23:14    [12604852]     Ответить | Цитировать Сообщить модератору
 Re: Кеширование последовательностей: могут ли быть выданы... дубли ?!?  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Edward Shevtsov
orawish
пропущено...

вообще, желание сбросить счётчик не всегда имеет целью создавать дубли.
ну а если таки про дубли говорить, то, да. практический пример - любая карусель.
например, сброс номеров ~документов каждый новый год/квартал
это к вопросу дизайна. Теряем возможность извлечь уникальный документ по его номеру. Обычно такие пожелания идут вкупе с "обязательно строго последовательно" и т.п.

дизайн имеет право захотеть (реализовать) составной ключ.
пожелания вкупе - тоже вопрос дизайна однако, имхо, это таки отдельный вопрос.
23 май 12, 23:47    [12604917]     Ответить | Цитировать Сообщить модератору
 Re: Кеширование последовательностей: могут ли быть выданы... дубли ?!?  [new]
Edward Shevtsov
Member

Откуда: Moscow
Сообщений: 13469
orawish,

и как реализуете сброс сиквенса в этом случае? Вешаете на джоб?
23 май 12, 23:55    [12604941]     Ответить | Цитировать Сообщить модератору
 Re: Кеширование последовательностей: могут ли быть выданы... дубли ?!?  [new]
Edward Shevtsov
Member

Откуда: Moscow
Сообщений: 13469
orawish
дизайн имеет право захотеть (реализовать) составной ключ.
я бы сказал архитектор )
23 май 12, 23:56    [12604946]     Ответить | Цитировать Сообщить модератору
 Re: Кеширование последовательностей: могут ли быть выданы... дубли ?!?  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Edward Shevtsov
orawish,

и как реализуете сброс сиквенса в этом случае? Вешаете на джоб?

можно и так, но не обязательно. варианты могут быть любые, вплоть до должностной инструкции на бумажке
(но я бы предпочел таки инкапсулировать это в прикладной api)
24 май 12, 00:01    [12604968]     Ответить | Цитировать Сообщить модератору
 Re: Кеширование последовательностей: могут ли быть выданы... дубли ?!?  [new]
Edward Shevtsov
Member

Откуда: Moscow
Сообщений: 13469
orawish
Edward Shevtsov
orawish,

и как реализуете сброс сиквенса в этом случае? Вешаете на джоб?

можно и так, но не обязательно. варианты могут быть любые, вплоть до должностной инструкции на бумажке
(но я бы предпочел таки инкапсулировать это в прикладной api)
первые два варианта не дают гарантии сброса сиквенса вовремя и удорожают стоимость поддержки. В общем, куда ни ткни, сплошные минусы. Про вариант прикладного api я не понял честно говоря. Мы будем проверять дату при каждой вставке?
24 май 12, 00:19    [12605017]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить