Похоже, это началось с "ORA-01422: точная выборка возвращает больше, чем запрошенное количество строк" в строке 1129 из MONITORING.PERFORM_CHECK
(возможно, select into
), которая вызвалавызов журнала ошибок, который сам по себе завершился неудачно с ORA-06519 из-за отсутствия commit
для его автономной транзакции.
Также, как представляется, существует "ORA-06502: ошибка с числом или значением:слишком мал символьный буфер строки " в err_msg := SUBSTR(SQLERRM, 1, 200);
, хотя трудно понять, почему, поскольку он определен как varchar(200)
(кстати, varchar2
).Я не уверен, почему вы все равно хотите его урезать, так как можете потерять полезную информацию.Лично я бы использовал sqlerrm
напрямую и убедился бы, что столбец имеет соответствующий размер.(Обратите внимание, что ваш фактический стек ошибок имеет длину 681 байт, а его усечение до 200 удаляет большинство деталей, которые вы ищете.)
Я никогда не знал, что sqlcode
- полезная вещь для захвата, иЯ предпочитаю хранить пакет, процедуру, номер строки, стек вызовов, модуль, действие, информацию о клиенте, пользователя, пользователя ОС и т. Д.