问题描述
客户系统出现如下ORA-01438错误,提示数据的精度超过允许值,是后台Job调度的任务:
Mon Jul 13 10:27:31 2009 Errors in file /admin/erpdb/bdump/erpdb1_j000_447020.trc: ORA-12012: error on auto execute of job 22 ORA-01438: value larger than specified precision allowed for this column ORA-06512: at "ERP.TIMRDU", line 13 ORA-06512: at line 1
专家解答
跟踪文件中缺省的不会记录具体的SQL、绑定变量等信息,我们可以通过ErrorStack进行后台跟踪,获得更详细的信息,执行如下SQL:
alter system set events='1438 trace name errorstack forever,level 10';
然后可以手工执行以下存储过程,获得跟踪文件,再关闭跟踪:
alter system set events='1438 trace name errorstack off';
在Oracle 10g中,这样的操作会被记录到日志文件中:
Mon Jul 13 10:48:39 2009 OS Pid: 541528 executed alter system set events '1438 trace name Errorstack forever,level 10' Mon Jul 13 10:56:06 2009 Errors in file /admin/erpdb/udump/erpdb1_ora_267056.trc: ORA-01438: value larger than specified precision allowed for this column Mon Jul 13 10:56:08 2009 Trace dumping is performing id=[cdmp_20090713105608] Mon Jul 13 10:57:15 2009 OS Pid: 541528 executed alter system set events '1438 trace name Errorstack off'
接下来分析获得的跟踪文件,就可以获得SQL文本线索,找到根本问题。
ITPUB上有一则极为经典详细的分析: http://www.itpub.net/thread-956435-1-1.html
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。