ORA-01438 Ошибка при выполнении двойного поиска
Я разработчик с опытом работы с SQL Server. У нас есть одно унаследованное приложение, которое использует SQR и Oracle для еженедельного поиска дубликатов записей. Мы получили ошибку при выполнении этого поиска после 14 лет. Там написано: "ORA-01438: значение, превышающее указанную точность, учитывает этот столбец". Когда я погуглил эту ошибку, я обнаружил, что она связана с числовым полем, и переданное значение больше, чем оно может содержать. Я могу увеличить размер, но не знаю для чего. Поскольку никто не поддерживает Oracle здесь, я пытаюсь устранить эту ошибку и нашел людей, использующих
alter system set events='1438 trace name Errorstack forever,level 10';
Я хотел бы знать, если это правильный способ выяснить, какой sql не удается? Кроме того, что это меняет и что такое уровень 10? Что-нибудь, что я должен рассмотреть прежде, чем выполнить этот запрос в производстве? Что мне нужно откатить после выполнения этого запроса? Мне сказали, что если я сделаю SQL> вставить в тестовые значения (100000000000000000,'test','test'); где 10000000000000000 недопустимо, тогда он выдаст общее сообщение Oracle ORA-01438. Но в файле трассировки будет отображаться ORA-01438: значение, превышающее указанную точность, разрешенную для этого столбца. Итак, где будет создан файл трассировки?
Current SQL statement for this session:
insert into test values (100000000000000000,'test','test').
Пожалуйста, дайте мне знать, если я не на правильном пути.
1 ответ
Используйте DBMS_MONITOR, чтобы включить трассировку для затронутого сеанса. Он будет содержать все SQL и ошибки и переменные связывания, если вы включите его.