|
Ошибка с автономными транзакциями
|
|||
---|---|---|---|
#18+
Добрый день. Опишу процесс. Есть две подсистемы. Подсистема один (A) создаётся документ в подсистеме два (B) посредством вызова функции Schema_B.pkg_name.func() через dblink. Функция вызывается не на прямую, а через самописное ядро коннекта (внутри используется DBLink). Ядро берет функцию из таблицы настроек и вызывает функцию через динамический SQL. Примерная структура ядра для подсистемы B такая: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Структура таблицы ID actionObject functionName1 Doc1 pkg_name.func12 Doc2 pkg_name.func2 Теперь про ошибку. Документы нужно выгрузить пачкой. Сейчас документов около 4000. Когда подсистема A начинает выгружать в подсистему B документы, то на количестве запросов (коннектов DBLink) 98 штук (очень странное число) выдаёт ошибку: Код: plsql 1.
Автономные транзакции так же используются для логирования в подсистеме A, но доступа туда нет, поэтому структуру ядра привести не могу. Плюс я так же посмотрел функцию, которая берется из таблицы настроек: нет ли там использования других функций с автономными транзакциями. Их нет. Короче, что делать? Куда смотреть? Может есть какая настройка в оракле, которая отвечает за "Общее количество транзакций в системе" или что-то вроде того, и её можно расширить? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 09:36 |
|
Ошибка с автономными транзакциями
|
|||
---|---|---|---|
#18+
Версия Oracle 12.1 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 09:54 |
|
Ошибка с автономными транзакциями
|
|||
---|---|---|---|
#18+
С Новым Годом! В первую очередь WHEN OTHERS ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 10:04 |
|
Ошибка с автономными транзакциями
|
|||
---|---|---|---|
#18+
IMNO Может есть какая настройка в оракле, которая отвечает за "Общее количество транзакций в системе" или что-то вроде того, и её можно расширить? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 10:17 |
|
Ошибка с автономными транзакциями
|
|||
---|---|---|---|
#18+
Elic "У меня говнокод, но перебирать его не хочется" :| Да я не против перебрать код, просто подскажите куда смотреть. С чего начать? Может вьюшки какие? Мы со вчерашнего вечера втроём сидим не можем понять, что происходит. И почему валится именно на 98 запросах? Откуда оно берет 98? Ну точнее это число явно как-то считается. Так вот вопрос, как оно считается? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 10:24 |
|
Ошибка с автономными транзакциями
|
|||
---|---|---|---|
#18+
IMNO просто подскажите куда смотреть. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 10:29 |
|
Ошибка с автономными транзакциями
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров В первую очередь WHEN OTHERS Elic http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM и сможешь забрать своих два молочных коктейля. Так, то есть вы утверждаете, что при создании документов, большая часть запросов падает в OTHERS из-за чего количество автономных транзакций превышает допустимое. Только что поговорил с разработчиком, который писал ядро. Он говорит, что вариант с убиранием ins_log из OTHERS он уже делал. Ошибка не исчезла. Те же 98 запросов и ошибка. Самое интересное, что на наших базах для разработки мы только что импортировали 168 документов. Ошибки не было. Ошибка с 98 запросов это на проде. Ну и соответственно ins_log из OTHERS убирали на проде. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 10:39 |
|
Ошибка с автономными транзакциями
|
|||
---|---|---|---|
#18+
IMNO Так, то есть вы утверждаете, что при создании документов, большая часть запросов падает в IMNO он уже делал. Ошибка не исчезла. IMNO Только что поговорил с разработчиком, который писал ядро. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 10:46 |
|
Ошибка с автономными транзакциями
|
|||
---|---|---|---|
#18+
оффтоп Elic Хочешь поговорить сам с собой - говори. Ну да, ну да. Пошёл я нахер :) Ладно. Я изначально так и предполагал, что из-за недостаточной формулировки, так как не я писал ядро, ничего не выйдет. Ну я хотя бы попытался. В любом случае спасибо, что хоть обратили внимание на мою тему. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 10:52 |
|
Ошибка с автономными транзакциями
|
|||
---|---|---|---|
#18+
Да не, чувак Отследить рекурсивность не сложно Самое простое -- перестать вызывать в обработчике ЛЮБЫХ ошибок саму подозреваемую процедуру Да и вообще никогда не использовать подобный код ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 11:05 |
|
Ошибка с автономными транзакциями
|
|||
---|---|---|---|
#18+
И да, насколько мое пьяное тело помнит -- в PL/SQL отслеживается рекурсивность до 50 вложений ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 11:07 |
|
Ошибка с автономными транзакциями
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров в PL/SQL отслеживается рекурсивность до 50 вложений ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 12:25 |
|
Ошибка с автономными транзакциями
|
|||
---|---|---|---|
#18+
Ну, я видел только такое Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 12:39 |
|
Ошибка с автономными транзакциями
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров Ну, я видел только такое ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 12:47 |
|
Ошибка с автономными транзакциями
|
|||
---|---|---|---|
#18+
Это просто самое простое Мне (как DBA) приходится сталкиваться с подобным кодом ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 12:51 |
|
Ошибка с автономными транзакциями
|
|||
---|---|---|---|
#18+
IMNO просто подскажите куда смотреть. С чего начать? Добавьте в код фиксацию (в таблице какой или в аутпут), какой именно документ и какая функция из таблицы IMNO Структура таблицы ID actionObject functionName1 Doc1 pkg_name.func12 Doc2 pkg_name.func2 обрабатываются. так вы локализуете, на чём падает. И потом смотрите эту функцию и документ, что там не так. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 13:07 |
|
Ошибка с автономными транзакциями
|
|||
---|---|---|---|
#18+
Ну вот и народ подтянулся Не мозгами, так хоть участием... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 13:21 |
|
Ошибка с автономными транзакциями
|
|||
---|---|---|---|
#18+
IMNO, не слетает ли сама програмулька логирования? нет ли в ней EXCEPTION WHEN OTHERS THEN /*Автономная транзакция*/ ins_log (); зы возможно ошибка из-за данных (напр 2020год), поетому на тестовой и не слетает добавлять отладочную информацию до выявления причины зыы Вячеслав Любомудров привел пример с 50 мож 98 ето ~ 50*2 (раз за два вызова считаете/49 раз отработало на 50 слет) .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2020, 13:47 |
|
Ошибка с автономными транзакциями
|
|||
---|---|---|---|
#18+
IMNO Короче, что делать? Куда смотреть? Смотреть, откуда и почему там взялось recursive. Например, вывести dbms_utility.format_error_backtrace. Или просто логировать последовательность вызовов (только аккуратно. раз у вас кривизна с автономными транзакциями, значит делайте это, например, через dbms_pipe). Ну и по результатам вставлять фитиля тому, кто эту рекурсию допустил. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 20:22 |
|
|
start [/forum/topic.php?fid=52&msg=39910530&tid=1881649]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 166ms |
0 / 0 |