-1

我是具有 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').

如果我不在正确的道路上,请告诉我。

4

1 回答 1

0

使用 DBMS_MONITOR 为受影响的会话启用跟踪。如果您启用它,这将包含所有 SQL 和错误以及绑定变量。

于 2015-09-23T12:07:58.927 回答