Oracle SEQUENCE | |
---|---|
ВладимирС Автор Сообщений: 1693 Дата регистрации: 03.11.2005 |
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
Хм. Удивление для меня... создаю SEQUENCE
Сиквенс покажет START WITH 1+N ... Но если я загружать буду через несколько дней, то сиквенс начнет грузить через 20 с последующим шагом 1. Зачем oracle так делает ? [attachment 30322 12.png] Может CACHE = 1 поставить ? Исправлено 2 раз(а). Последнее : ВладимирС, 19.11.18 13:54 |
Re: Oracle SEQUENCE | |
---|---|
ВладимирС Автор Сообщений: 1693 Дата регистрации: 03.11.2005 |
Еще вопрос...
Кто-то из разрабов через dotConnect for Oracle создал SEQUENCE и не сознается. Пробую удалить
forums.devart.com Как его удалить то ? |
Re: Oracle SEQUENCE | |
---|---|
pasha_usue Сообщений: 3647 Откуда: Е-бург Дата регистрации: 06.10.2006 |
А откаты транзакций никто не делает? Или ошибки при вставке?
|
Re: Oracle SEQUENCE | |
---|---|
ВладимирС Автор Сообщений: 1693 Дата регистрации: 03.11.2005 |
Нет, эту таблицу только я веду... |
Re: Oracle SEQUENCE | |
---|---|
pasha_usue Сообщений: 3647 Откуда: Е-бург Дата регистрации: 06.10.2006 |
The "cache" clause caches the specified number of sequence values into the buffers in the SGA. This speeds access, but all cached numbers are lost when the database is shut down. The default value is 20; |
Re: Oracle SEQUENCE | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
То же подозрение на кэшь были)))
А Паша даже описание привел. Так может бд shut down регулярно. Вот и теряются? И кстати, минимум кэш 2. Попробуй поставить, меньше пробелы будут |
Re: Oracle SEQUENCE | |
---|---|
ВладимирС Автор Сообщений: 1693 Дата регистрации: 03.11.2005 |
Хм... Никто кроме меня database is shut down не сделает. Хотя алерт надо посмотреть. Вдруг сисадмины виртуалку перестартуют ночью. |
Re: Oracle SEQUENCE | |
---|---|
ВладимирС Автор Сообщений: 1693 Дата регистрации: 03.11.2005 |
Да, уже поставил. |
Re: Oracle SEQUENCE | |
---|---|
pasha_usue Сообщений: 3647 Откуда: Е-бург Дата регистрации: 06.10.2006 |
Минимум - NOCACHE. |
Re: Oracle SEQUENCE | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Почитай доку для того чтобы не писать на каждый чих "в базу" очередной сгенерированный id. Он сразу записывает в таблицу +20, а в памяти держит инфу что можно выдавать значения из диапазона от старого+1 до старого+20 (оно же "новое") Зачем? CACHE это опция для повышения производительности - чтобы массовые вставки записей не требовали на каждую генерацию id писать что-то в базу. сиквенс это не более чем тот же самый фоксовый newid, только реализуемый самой системой, а не "самописный" - значения хранятся в системной таблице SEQ$ или типа того (сорри, нет под рукой БД). В общем для малоизменяемых таблиц вполне можно и NOCACHE задать. Хотя лично я не вижу никакой беды в "пробелах в нумерации" - тем более что в продакшене их почти не будет - они возникают лишь при перезапуске сервера, так то сервер в памяти хранит всё что надо и не будет "перескакивать". Что ж тут не понятно то? Этот сиквенс система создала, вероятно, в ответ на использование AUTOINC - т.е. помимо самого сиквенса есть ещё и метаинформация в какой-то таблице которая делает всё это вместе "похожим" на MSSQL-ное автогенерируемое поле. Как и любую "вспомогательную" сущность такое нельзя - надо удалять "основную" сущность - т.е. автоинкрементное поле которое этот сиквенс породило. ------------------ WBR, Igor |
Re: Oracle SEQUENCE | |
---|---|
ВладимирС Автор Сообщений: 1693 Дата регистрации: 03.11.2005 |
Спасибо за ответы...
Но: На самом деле про сиквенс я знаю... Посмотрел alert_KATTEST.log - в нем перезапуска сервера НЕТ. Да и перезапускать сервер - только моя прероготива... Теперь я и хочу узнать, ПОЧЕМУ возникли пробелы в сиквенсе при CACHE 20 ? Может бага oracle 12.2.0.1.0 ? Во что конечно не верится. Как то бы найти эту сущность. Разрабы в web-е строя видимо модель потренировались в создании таблицы с автоинкреминентом. Потом ВИДИМО удалили таблицу (т.к. в схеме не видно созданные не мной таблицы). Но не проверили в схеме, удалился ли автоинкреминент. Или EF (Microsoft.AspNetCore.Identity.EntityFrameworkCore) что-то не так сделал. Короче, концы не могу найти. Ради интереса, в TOADe есть UsedBy. Дык он не показывает в каком месте используется этот сиквенс. И полный скрипт сиквенса:
[attachment 30330 122.png] Конечно можно и наплевать на него. Но интересно же разобраться. Исправлено 3 раз(а). Последнее : ВладимирС, 21.11.18 07:56 |
Re: Oracle SEQUENCE | |
---|---|
pasha_usue Сообщений: 3647 Откуда: Е-бург Дата регистрации: 06.10.2006 |
Если таблица лежит в корзине, то Sequence нельзя удалить. А сам Sequence в корзину не отправляется. Исправлено 1 раз(а). Последнее : pasha_usue, 21.11.18 08:03 |
Re: Oracle SEQUENCE | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Сервер выкинул этот сиквенс из памяти (а значит и все закэшированные значения) - это вполне возможно. Объекты сами по себе не живут "вечно" в памяти - проходит время и сервер вполне может их оттуда убрать, освобождая место для других объектов. Не пользовались им, вот он и "устарел". Это нормальное поведение. Тебе нужно понять лишь 1 простой как грабли факт - sequence НЕ ДАЁТ "непрерывных" последовательностей номеров ни при каких условиях (как, впрочем, и подавляющее большинство других средств генерации ID). Банальный ролбэк добавленной записи и всё - твоя последовательность будет иметь "дырку". Гугл говорит про SYS.IDNSEQ$ ------------------ WBR, Igor |
Re: Oracle SEQUENCE | |
---|---|
ВладимирС Автор Сообщений: 1693 Дата регистрации: 03.11.2005 |
Понятно. Скорее всего так и происходит. Это понятно. Например сделать дамп схемы. Установить его и все сиквенсы начнут работать от последнего определенного в его описании. БОЛЬШОЕ спасибо. Надо почитать про SYS.IDNSEQ$.
[attachment 30335 12.png] Хм...
[attachment 30336 121.png] Точно кто-то тренировался в составлении таблицы через "Visual Studio Code". Точно, СПАСИБО. Таблица: "BIN$enWt/1cuLIjgU8AF8QpKww==$0" в корзине.
Почистил корзину. Таблица удалилась и сиквенс тоже. ВСЕМ БОЛЬШОЕ СПАСИБО. Исправлено 3 раз(а). Последнее : ВладимирС, 22.11.18 08:01 |
Re: Oracle SEQUENCE | |
---|---|
ВладимирС Автор Сообщений: 1693 Дата регистрации: 03.11.2005 |
Все таки мое мнение, что ORACLE (тем более такой высокой версии 12.2.0.1.0) должен был предусмотреть при удалении таблицы сразу удаление автоинкреминентного сиквенса. Как бы бага. Исправлено 1 раз(а). Последнее : ВладимирС, 26.11.18 09:23 |
Re: Oracle SEQUENCE | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Не пользуйся корзиной - может и будет удалять "сразу всё", а иначе как ты себе представляешь восстановление объекта из корзины? А вообще forum.foxclub.ru Там есть ссылка на перевод "будней разработчика БД оракл" - почитай, посочувствуй И если не передумаешь, рэйзи саппорт кейс - описывай свою проблему (хотя они не будут, конечно же, ничего менять, т.к. поведение вполне логичное ) ------------------ WBR, Igor |
Re: Oracle SEQUENCE | |
---|---|
ВладимирС Автор Сообщений: 1693 Дата регистрации: 03.11.2005 |
1. Конечно корзину можно отключить. 2. Как я представляю себе ? Т.к. Автоинкрементный сиквенс принадлежит таблице, правильнее сказать связан. То он должен удаляться автоматически вместе с таблицей. При восстановлении таблицы, должен восстановиться и сиквенс. Они же связаны. Как то так. Может конечно я и туплю. По поводу Безумие и успех кода Oracle Database... У всех трудности... Но каждая компания их преодолевает самостоятельно. Успехов разрабам оракла. А вообще мне оракл - нравится. В основном работал с 11g. Только сейчас у заказчика появился 12c. Теперь и нам надо на нем разрабатывать. Исправлено 1 раз(а). Последнее : ВладимирС, 28.11.18 07:37 |
Re: Oracle SEQUENCE | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Поскольку оракл это всё то же ядро времён мамонтов или даже птеродактилей то многие из "новых фишек" это на самом деле не очень умело прилепленные "нашлёпки". Та же корзина - по сути это просто переименование объектов, и скрытие их из некоторых частей системы (но в других частях они, конечно же, остаются). Автоинкрементные поля - просто генерируемый сиквенс и его вызов в дефолте поля (или ещё где - не помню как там они выкрутились)... Понятно что где-то между этими "новыми и очень полезными функциями" будут не очень удачные "пересечения" - особенно в разнообразных утилитах. Со временем, конечно, притрутся, научатся, скажем, прятать эти авто-сиквенсы, или хотя-бы "автосиквенсы для удалённых таблиц" из "списков" в UI, или даже в собственно системных представлениях чего подкрутят. Сам то объект ну никак нельзя удалять - как и триггера, к примеру.
------------------ WBR, Igor |
Re: Oracle SEQUENCE | |
---|---|
ВладимирС Автор Сообщений: 1693 Дата регистрации: 03.11.2005 |
Это жизнь. Пусть работают. Когда-то, в 2006 году, пришел в фирму "Прогноз". У них развивался свой продукт П3, потом П5, потом П7. Ядром являлся C++, они на основе его делали транслятор типа Паскаля, причем как я потом узнал это Питерцы начинали делать. Прогноз купил это и начал дорабатывать под свои нужды. Вначале все неплохо было. Я пришел, когда П5 только начинал развиваться. На этом языке (П5) мы уже делали приложения для заказчиков. Продавали. Но, багов куча было. Писали таски для разрабов ядра. Они выпускали новые релизы. И все по кругу. Но, мировые трансляторы выпускали новые фичи... Наши разрабы не успевали делать аналоги, что естественно, что бы приложения имели конкурентную визуализацию. Естественный выбор, перешли на западные трансляторы: C#, java... Ну и потом развал компании. |
© 2000-2024 Fox Club  |