powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Курсор или Merge
16 сообщений из 41, страница 2 из 2
Курсор или Merge
    #39492147
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нуфьсо.
Если старшие товарищи сказали дед Лок - значит дед Лок.
Это плохо, наверное, да?
Побегу срочно переделывать все ETLи, а то мерджат, собаки, по 10-20 миллионов за один присест...
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492148
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015Есть ли какой-то правильный способ использовать эти инструменты? ))Решение к задаче подбирается только после ее постановки.
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492153
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousНуфьсо.
Если старшие товарищи сказали дед Лок - значит дед Лок.
Это плохо, наверное, да?
Побегу срочно переделывать все ETLи, а то мерджат, собаки, по 10-20 миллионов за один присест...
))))))))))))))))))))))))))))
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492181
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKad,

Вы правы, с этого и надо было начать )))
Есть две таблицы operation в двух БД по ДБ-линку, достаточно большие, записей больше миллиона, много столбцов, почти на всех fk-ключи, есть pk
недавно добавили новый столбец в двух БД в этих таблицах
Синхронизация происходит по джобу, но с какого-то момента, эти таблицы перестали синхронизироваться совсем.
Была проблема с датами, вроде удалось решить
теперь почему-то курсор не отрабатывает, думал переписать под merge, но не знаю как быстро это может отрабатывать.
Логика следующая - берётся select за определённый интервал с последней даты синхронизации по текущую, и по нму бежит курсор и уже update и insert

Вот. На сколько я понял, merge может так же мержить от этого селекта за последний интервал времени, однако кол-во записей м.б. больше 1000 за указанный период времени...
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492236
=nomad=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У вас БД на линках - обе Oracle?
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492248
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
=nomad=У вас БД на линках - обе Oracle?
Да
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492282
=nomad=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это разовое действие? Может просто тогда склонировать одну таблицу в другую? А потом пусть работает ваш джоб-синхронизатор?
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492303
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
=nomad=Это разовое действие? Может просто тогда склонировать одну таблицу в другую? А потом пусть работает ваш джоб-синхронизатор?
Может быть, но он не синхронизирует, а должен, там курсор стоит, почему он не отрабатывает не могу понять, хотел переписать на merge, но не знаю, будет ли тормозить или нет (((
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492304
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015теперь почему-то курсор не отрабатывает

вот с етим надо разобраться

бо если не отработает мерже, то будет сложнее найти почему-то

ps
дедлок при больше 1000, ето шютка Ваших товарищей

.....
stax
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492394
=nomad=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..ето шютка Ваших товарищей
Может не совсем так. Видя как RMagistr2015 задает вопросы, то может они отвечали не на тот вопрос, или не так, как тут приведено, или что-то другое.
Например, у меня был deadlock, когда я попробовал merge делать с базы ms sql. Или Doc ID 5970280.8 исправление патча для Oracle 10/11. Ну и так далее.
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492406
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
=nomad=stax..ето шютка Ваших товарищей
Может не совсем так. Видя как RMagistr2015 задает вопросы, то может они отвечали не на тот вопрос, или не так, как тут приведено, или что-то другое.
Например, у меня был deadlock, когда я попробовал merge делать с базы ms sql. Или Doc ID 5970280.8 исправление патча для Oracle 10/11. Ну и так далее.
Спасибо Вам большое )))
Буду рад почитать ваш "API" по задаванию Вам вопросов )))
API-query - connecting peoples ;-)))
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492443
Evgeny2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RMagistr2015AmKad,

Вы правы, с этого и надо было начать )))
Есть две таблицы operation в двух БД по ДБ-линку, достаточно большие, записей больше миллиона, много столбцов, почти на всех fk-ключи, есть pk
недавно добавили новый столбец в двух БД в этих таблицах
Синхронизация происходит по джобу, но с какого-то момента, эти таблицы перестали синхронизироваться совсем.
Была проблема с датами, вроде удалось решить
теперь почему-то курсор не отрабатывает, думал переписать под merge, но не знаю как быстро это может отрабатывать.
Логика следующая - берётся select за определённый интервал с последней даты синхронизации по текущую, и по нму бежит курсор и уже update и insert

Вот. На сколько я понял, merge может так же мержить от этого селекта за последний интервал времени, однако кол-во записей м.б. больше 1000 за указанный период времени...

Ты сначала из удаленной БД сделай выгрузку таблицы по предикату изменения на свою сторону в GTT (on commit preserve rows).
Потом merge на своей стороне с факторной таблицей и GTT.

Если merge будет делаться долго и будет вылетать на snapshot too old.
То разбей с цикле по периодам времени. (не сколько я понимаю в таблице есть время)
И выполняй себе спокойно.
В пакете сделай логирование в спец таблицу, чтобы контролировать время выполнения каждого DML и сообщений об ошибках.
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492463
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Evgeny2RMagistr2015AmKad,

Вы правы, с этого и надо было начать )))
Есть две таблицы operation в двух БД по ДБ-линку, достаточно большие, записей больше миллиона, много столбцов, почти на всех fk-ключи, есть pk
недавно добавили новый столбец в двух БД в этих таблицах
Синхронизация происходит по джобу, но с какого-то момента, эти таблицы перестали синхронизироваться совсем.
Была проблема с датами, вроде удалось решить
теперь почему-то курсор не отрабатывает, думал переписать под merge, но не знаю как быстро это может отрабатывать.
Логика следующая - берётся select за определённый интервал с последней даты синхронизации по текущую, и по нму бежит курсор и уже update и insert

Вот. На сколько я понял, merge может так же мержить от этого селекта за последний интервал времени, однако кол-во записей м.б. больше 1000 за указанный период времени...

Ты сначала из удаленной БД сделай выгрузку таблицы по предикату изменения на свою сторону в GTT (on commit preserve rows).
Потом merge на своей стороне с факторной таблицей и GTT.

Если merge будет делаться долго и будет вылетать на snapshot too old.
То разбей с цикле по периодам времени. (не сколько я понимаю в таблице есть время)
И выполняй себе спокойно.
В пакете сделай логирование в спец таблицу, чтобы контролировать время выполнения каждого DML и сообщений об ошибках.
К этой мысли я то же приходил, спасибо Вам большое )))) Очень дельный совет )))
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492758
Evgeny2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RMagistr2015Evgeny2пропущено...


Ты сначала из удаленной БД сделай выгрузку таблицы по предикату изменения на свою сторону в GTT (on commit preserve rows).
Потом merge на своей стороне с факторной таблицей и GTT.

Если merge будет делаться долго и будет вылетать на snapshot too old.
То разбей с цикле по периодам времени. (не сколько я понимаю в таблице есть время)
И выполняй себе спокойно.
В пакете сделай логирование в спец таблицу, чтобы контролировать время выполнения каждого DML и сообщений об ошибках.
К этой мысли я то же приходил, спасибо Вам большое )))) Очень дельный совет )))

Как успехи? какое время показывает синхронизация?
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492777
IgorSm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А мы поймали нефиговый баг(особенность) при использовании merge на OWM-таблицах (versioned)
Записал прям напрямую в LT-таблицы минуя Workspace.
Больше не используем )
--
Ну и цитата

Unfortunately the merge operation does not currently work with versioned tables. The optimizer translates the merge into insert/update statements on the underlying _LT table. As a result, the instead of triggers that are created during enableversioning are never fired.
https://community.oracle.com/thread/326110

P.S. Кстати, не в курсе поправили ли?
...
Рейтинг: 0 / 0
Курсор или Merge
    #39493755
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Evgeny2RMagistr2015пропущено...

К этой мысли я то же приходил, спасибо Вам большое )))) Очень дельный совет )))

Как успехи? какое время показывает синхронизация?
Пока отложил, думаю вернуться в свободное время )))
...
Рейтинг: 0 / 0
16 сообщений из 41, страница 2 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Курсор или Merge
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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