Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Синхронизация sequences / 25 сообщений из 30, страница 1 из 2
25.01.2019, 10:05
    #39764762
Als1973
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация sequences
Задача довольно тривиальная, может кто сталкивался, есть готовое решение? Есть несколько схем (dev, test, preprod, prod). Как бы между ними синхронизировать сиквенсы? На деве и тесте обычно далеко вперед убегают, релзить сложно.
...
Рейтинг: 0 / 0
25.01.2019, 10:19
    #39764771
jan2ary
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация sequences
Als1973,

А зачем их синхронизировать? Что у вас такого при релизе происходит?
...
Рейтинг: 0 / 0
25.01.2019, 10:19
    #39764772
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация sequences
Als1973может кто сталкивалсяТогда бы решение можно было найти поиском.
...
Рейтинг: 0 / 0
25.01.2019, 10:30
    #39764785
Viewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация sequences
...
Рейтинг: 0 / 0
25.01.2019, 10:30
    #39764786
Als1973
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация sequences
jan2aryAls1973,

А зачем их синхронизировать? Что у вас такого при релизе происходит?

как обычно insert с одной схемы с другую. NEXTVAL не прокатывает так как на деве или тесте могут быть удаления внутри сегмента.
...
Рейтинг: 0 / 0
25.01.2019, 11:08
    #39764808
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация sequences
Als1973 На деве и тесте обычно далеко вперед убегают, релзить сложно.
Последовательности часто используют для генерации рк

допустим вернули вы значение взад, а дальше как жить, при инсерте запросто получить dublicate key

.....
stax
...
Рейтинг: 0 / 0
25.01.2019, 11:15
    #39764815
Als1973
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация sequences
StaxAls1973 На деве и тесте обычно далеко вперед убегают, релзить сложно.
Последовательности часто используют для генерации рк

допустим вернули вы значение взад, а дальше как жить, при инсерте запросто получить dublicate key

.....
stax

Так и я про то, мне не взад, мне вперед да проде нужно.
...
Рейтинг: 0 / 0
25.01.2019, 11:20
    #39764819
jan2ary
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация sequences
Als1973jan2aryAls1973,

А зачем их синхронизировать? Что у вас такого при релизе происходит?

как обычно insert с одной схемы с другую. NEXTVAL не прокатывает так как на деве или тесте могут быть удаления внутри сегмента.Это плохой дизайн, думайте еще. Сиквенсы обеспечивают уникальность (всего лишь), и логика приложения и запросов не должны зависеть от конкретных значений. И переливка данных из схемы в схему не должна зависеть от конкретных значений. Вы же не мигрируете данные из теста в прод, а только словари?
...
Рейтинг: 0 / 0
25.01.2019, 11:26
    #39764828
Als1973
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация sequences
jan2aryЭто плохой дизайн, думайте еще. Сиквенсы обеспечивают уникальность (всего лишь), и логика приложения и запросов не должны зависеть от конкретных значений. И переливка данных из схемы в схему не должна зависеть от конкретных значений. Вы же не мигрируете данные из теста в прод, а только словари?

К меня дизайн положения хранится в таблицах.
...
Рейтинг: 0 / 0
25.01.2019, 12:14
    #39764852
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация sequences
Als1973,

если я правильно понял вопрос, необходимо время от времени в четырех схемах выставить одноименные секвенсы в одинаковое значение.
1) это можно сделать промоткой "отстающих" секвенсов в цикле (типа 100 раз SELECT seq.Nextval FROM dual и она ушла на 100 вперед)
2) или переделать дизайн базы, оставив секвенсы только в одной схеме, а в других вместо секвенсов - лишь " синонимы ".
...
Рейтинг: 0 / 0
25.01.2019, 12:27
    #39764864
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация sequences
Als1973insert с одной схемы с другуюЕсли данные появляются только в одной схеме, то докуручивать сиквенс, где он все равно не используется, смысла нет. Если данные появляются в нескольких схемах, в прокрутке сиквенса все равно нет смысла, но уже по причине, что не гарантирует промежную уникальность.
...
Рейтинг: 0 / 0
25.01.2019, 12:35
    #39764873
Als1973
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация sequences
-2-Если данные появляются только в одной схеме, то докуручивать сиквенс, где он все равно не используется, смысла нет. Если данные появляются в нескольких схемах, в прокрутке сиквенса все равно нет смысла, но уже по причине, что не гарантирует промежную уникальность.

Данные во всех схемах должны быть одинаковыми. Интерфейс приложения там хранится, формы описываются...
Задача же простая, сравнить два сиквенса и установить к большему.
...
Рейтинг: 0 / 0
25.01.2019, 12:42
    #39764879
Als1973
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация sequences
Кроик Семён Als1973,


1) это можно сделать промоткой "отстающих" секвенсов в цикле (типа 100 раз SELECT seq.Nextval FROM dual и она ушла на 100 вперед)


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

Кроик Семён2) или переделать дизайн базы, оставив секвенсы только в одной схеме, а в других вместо секвенсов - лишь " синонимы ".

Там не только разные схемы, там разные инстанции.
...
Рейтинг: 0 / 0
25.01.2019, 13:09
    #39764910
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация sequences
тогда если без "несколько баз", а только "нескольло схем" и не напрягает, что при пересоздании секвенсов все использующие их триггеры/процедуры/пакеты станут невалидными:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select 
   s.sequence_name,
   max(s.last_number) as max_last_number,
   'DROP SEQUENCE '||s.sequence_name||';' as SQL_01,
   'CREATE SEQUENCE '||s.sequence_name||' START WITH '||to_char(max(s.last_number)+1)||' INCREMENT BY 1 NOCACHE ORDER NOMAXVALUE;' as SQL_02
from 
   all_sequences s
where 
   s.sequence_owner in ('DEV', 'TEST', 'PREPOD', 'PROD')
group by
   s.sequence_name
...
Рейтинг: 0 / 0
25.01.2019, 13:11
    #39764918
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация sequences
Als1973,

с пересоданием две заморочки
1) права
2) валидация хранимых

как изменить/установить значение много раз обсуждалось

у Вас вообще простой случай, накат вперед

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

....
stax
...
Рейтинг: 0 / 0
25.01.2019, 13:26
    #39764934
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация sequences
Als1973Задача же простая, сравнить два сиквенса и установить к большему.Через 0 секунд от начала сравнения они могут опять разойтись. Либо ты настолько криворук, что не в состоянии написать простой цикл и удовлетвориться допустимым расхождением, либо ты настолько туп, что предполагаешь, что есть универсальное решение для исправления специфично кривого управления версиями.
...
Рейтинг: 0 / 0
25.01.2019, 13:28
    #39764937
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация sequences
Кроик Семён
Код: plsql
1.
   'DROP SEQUENCE '||s.sequence_name||';' as SQL_01,


Семён, Вы неподражаемы.
...и ведь вроде не первый год "замужем"...
...
Рейтинг: 0 / 0
25.01.2019, 13:38
    #39764941
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация sequences
Als1973Данные во всех схемах должны быть одинаковыми. Интерфейс приложения там хранится, формы
описываются...

Ну так и копируй данные. При этом они получат новые ключи из последовательностей и ничего
прокручивать не придётся. В чём проблема-то?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25.01.2019, 13:44
    #39764949
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация sequences
Dimitry SibiryakovНу так и копируй данные. При этом они получат новые ключи из последовательностей и ничего
прокручивать не придётся. В чём проблема-то?

В кривом дизайне, по-видимому.
Мало того, что сделали справочные коды суррогатным ключом на базе последовательности, так еще и растащили эти последовательности по клиентам и теперь грызут ногти :)

2ТС: просто выделите себе как поставщику решения некий диапазон ключей, в который никто не в праве залезать при кастомизации решения на местах.
На боевых инсталляциях выкрутите последовательность за пределы указанного диапазона.
И просто переносите свои метаданные, уже не трогая последовательности.
...
Рейтинг: 0 / 0
25.01.2019, 13:46
    #39764952
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация sequences
andrey_anonymousМало того, что сделали справочные коды суррогатным ключом на базе последовательности, так
еще и растащили эти последовательности по клиентам и теперь грызут ногти :)

Когда ногти отгрызут совсем, возможно, они перестанут мешать написать процедуру переноса
данных с назначением новых ключей всему каскаду. Других мешающих этому факторов я не вижу.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25.01.2019, 13:49
    #39764954
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация sequences
Dimitry SibiryakovДругих мешающих этому факторов я не вижу.

Поддержка решения при этом осложняется.
Все-таки удобнее точно знать идентификаторы сущностей, которые сам же и тиражируешь.
...
Рейтинг: 0 / 0
25.01.2019, 13:49
    #39764955
Als1973
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация sequences
Stax
но есть нюанс, чтоб узнать значение последовательности надо спалить номер

....
stax

CURRVAL не работает?
...
Рейтинг: 0 / 0
25.01.2019, 13:56
    #39764962
Als1973
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация sequences
Dimitry SibiryakovНу так и копируй данные. При этом они получат новые ключи из последовательностей и ничего
прокручивать не придётся. В чём проблема-то?


Не получат, никакие триггера не используются. Сиквенсы дергаются только из процедур. Даже если бы получили "новые ключи из последовательностей" мне этого недостаточно, нужны такие же.
...
Рейтинг: 0 / 0
25.01.2019, 13:57
    #39764964
Als1973
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация sequences
Viewer,
20700153
Спасибо, мне этого вполне достаточно.
...
Рейтинг: 0 / 0
25.01.2019, 14:18
    #39764982
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация sequences
Als1973Staxно есть нюанс, чтоб узнать значение последовательности надо спалить номер

....
stax

CURRVAL не работает?

в древних версиях не работает

.....
stax
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Синхронизация sequences / 25 сообщений из 30, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]