我是具有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').
如果我没有走上正确的道路,请告诉我。
答案 0 :(得分:0)
使用DBMS_MONITOR为受影响的会话启用跟踪。如果启用它,它将包含所有SQL和错误以及绑定变量。