|
|
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
Нуфьсо. Если старшие товарищи сказали дед Лок - значит дед Лок. Это плохо, наверное, да? Побегу срочно переделывать все ETLи, а то мерджат, собаки, по 10-20 миллионов за один присест... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 11:03 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
RMagistr2015Есть ли какой-то правильный способ использовать эти инструменты? ))Решение к задаче подбирается только после ее постановки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 11:04 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousНуфьсо. Если старшие товарищи сказали дед Лок - значит дед Лок. Это плохо, наверное, да? Побегу срочно переделывать все ETLи, а то мерджат, собаки, по 10-20 миллионов за один присест... )))))))))))))))))))))))))))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 11:06 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
AmKad, Вы правы, с этого и надо было начать ))) Есть две таблицы operation в двух БД по ДБ-линку, достаточно большие, записей больше миллиона, много столбцов, почти на всех fk-ключи, есть pk недавно добавили новый столбец в двух БД в этих таблицах Синхронизация происходит по джобу, но с какого-то момента, эти таблицы перестали синхронизироваться совсем. Была проблема с датами, вроде удалось решить теперь почему-то курсор не отрабатывает, думал переписать под merge, но не знаю как быстро это может отрабатывать. Логика следующая - берётся select за определённый интервал с последней даты синхронизации по текущую, и по нму бежит курсор и уже update и insert Вот. На сколько я понял, merge может так же мержить от этого селекта за последний интервал времени, однако кол-во записей м.б. больше 1000 за указанный период времени... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 11:26 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
У вас БД на линках - обе Oracle? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 12:17 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
=nomad=У вас БД на линках - обе Oracle? Да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 12:25 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
Это разовое действие? Может просто тогда склонировать одну таблицу в другую? А потом пусть работает ваш джоб-синхронизатор? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 12:51 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
=nomad=Это разовое действие? Может просто тогда склонировать одну таблицу в другую? А потом пусть работает ваш джоб-синхронизатор? Может быть, но он не синхронизирует, а должен, там курсор стоит, почему он не отрабатывает не могу понять, хотел переписать на merge, но не знаю, будет ли тормозить или нет ((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 13:01 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
RMagistr2015теперь почему-то курсор не отрабатывает вот с етим надо разобраться бо если не отработает мерже, то будет сложнее найти почему-то ps дедлок при больше 1000, ето шютка Ваших товарищей ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 13:02 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
stax..ето шютка Ваших товарищей Может не совсем так. Видя как RMagistr2015 задает вопросы, то может они отвечали не на тот вопрос, или не так, как тут приведено, или что-то другое. Например, у меня был deadlock, когда я попробовал merge делать с базы ms sql. Или Doc ID 5970280.8 исправление патча для Oracle 10/11. Ну и так далее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 14:19 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
=nomad=stax..ето шютка Ваших товарищей Может не совсем так. Видя как RMagistr2015 задает вопросы, то может они отвечали не на тот вопрос, или не так, как тут приведено, или что-то другое. Например, у меня был deadlock, когда я попробовал merge делать с базы ms sql. Или Doc ID 5970280.8 исправление патча для Oracle 10/11. Ну и так далее. Спасибо Вам большое ))) Буду рад почитать ваш "API" по задаванию Вам вопросов ))) API-query - connecting peoples ;-))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 14:35 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
RMagistr2015AmKad, Вы правы, с этого и надо было начать ))) Есть две таблицы operation в двух БД по ДБ-линку, достаточно большие, записей больше миллиона, много столбцов, почти на всех fk-ключи, есть pk недавно добавили новый столбец в двух БД в этих таблицах Синхронизация происходит по джобу, но с какого-то момента, эти таблицы перестали синхронизироваться совсем. Была проблема с датами, вроде удалось решить теперь почему-то курсор не отрабатывает, думал переписать под merge, но не знаю как быстро это может отрабатывать. Логика следующая - берётся select за определённый интервал с последней даты синхронизации по текущую, и по нму бежит курсор и уже update и insert Вот. На сколько я понял, merge может так же мержить от этого селекта за последний интервал времени, однако кол-во записей м.б. больше 1000 за указанный период времени... Ты сначала из удаленной БД сделай выгрузку таблицы по предикату изменения на свою сторону в GTT (on commit preserve rows). Потом merge на своей стороне с факторной таблицей и GTT. Если merge будет делаться долго и будет вылетать на snapshot too old. То разбей с цикле по периодам времени. (не сколько я понимаю в таблице есть время) И выполняй себе спокойно. В пакете сделай логирование в спец таблицу, чтобы контролировать время выполнения каждого DML и сообщений об ошибках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 15:13 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
Evgeny2RMagistr2015AmKad, Вы правы, с этого и надо было начать ))) Есть две таблицы operation в двух БД по ДБ-линку, достаточно большие, записей больше миллиона, много столбцов, почти на всех fk-ключи, есть pk недавно добавили новый столбец в двух БД в этих таблицах Синхронизация происходит по джобу, но с какого-то момента, эти таблицы перестали синхронизироваться совсем. Была проблема с датами, вроде удалось решить теперь почему-то курсор не отрабатывает, думал переписать под merge, но не знаю как быстро это может отрабатывать. Логика следующая - берётся select за определённый интервал с последней даты синхронизации по текущую, и по нму бежит курсор и уже update и insert Вот. На сколько я понял, merge может так же мержить от этого селекта за последний интервал времени, однако кол-во записей м.б. больше 1000 за указанный период времени... Ты сначала из удаленной БД сделай выгрузку таблицы по предикату изменения на свою сторону в GTT (on commit preserve rows). Потом merge на своей стороне с факторной таблицей и GTT. Если merge будет делаться долго и будет вылетать на snapshot too old. То разбей с цикле по периодам времени. (не сколько я понимаю в таблице есть время) И выполняй себе спокойно. В пакете сделай логирование в спец таблицу, чтобы контролировать время выполнения каждого DML и сообщений об ошибках. К этой мысли я то же приходил, спасибо Вам большое )))) Очень дельный совет ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 15:29 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
RMagistr2015Evgeny2пропущено... Ты сначала из удаленной БД сделай выгрузку таблицы по предикату изменения на свою сторону в GTT (on commit preserve rows). Потом merge на своей стороне с факторной таблицей и GTT. Если merge будет делаться долго и будет вылетать на snapshot too old. То разбей с цикле по периодам времени. (не сколько я понимаю в таблице есть время) И выполняй себе спокойно. В пакете сделай логирование в спец таблицу, чтобы контролировать время выполнения каждого DML и сообщений об ошибках. К этой мысли я то же приходил, спасибо Вам большое )))) Очень дельный совет ))) Как успехи? какое время показывает синхронизация? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2017, 08:46 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
А мы поймали нефиговый баг(особенность) при использовании 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. Кстати, не в курсе поправили ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2017, 09:17 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39492147&tid=1885555]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
155ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 435ms |

| 0 / 0 |
