Welcome 微信登录

首页 / 数据库 / MySQL / ORA-01438解决方法

解决思路:(1)跟踪执行插入的SQL/存储过程,找到罪魁祸首的行,修改后再次插入。(2)最简单的办法就是增加目的字段的精度。 由于定位不到具体的表以及具体的字段,需要跟踪错误1、首先进行建立表SQL> create table t (many number(4,2));Table created精度为4,刻度为2 也就说整数位数最多为2,小数位数会占去2位2、然后进行试验插入SQL> insert into t values(1000000);错误:ORA-01438: value larger than specified precision allowed for this column出现错误3、进行系统设置改变进行TRACEalter system set events="1438 trace name Errorstack forever,level 10";4、新开一个会话(我觉得这样的改变只对随后的会话起作用,并不会对设置前的会话起作用)进行模拟错误。SQL> insert into tony.t values(100000000);错误:ORA-01438: value larger than specified precision allowed for this column5、在后台系统[Oracle@localhost udump]$ pwd/home/oracle/admin/ORCL/udump[oracle@localhost udump]$ lsORCL_ora_5035.trc还可以通过SQL脚本查找生成的trace文件:SELECT a.VALUE || b.symbol || c.instance_name || "_ora_" || d.spid || ".trc"
trace_file
FROM (SELECT VALUE
FROM v$parameter
WHERE name = "user_dump_dest") a,
(SELECT SUBSTR (VALUE, -6, 1) symbol
FROM v$parameter
WHERE name = "user_dump_dest") b,
(SELECT instance_name FROM v$instance) c,
(SELECT spid
FROM v$session s, v$process p, v$mystat m
WHERE s.paddr = p.addr AND s.sid = m.sid AND m.statistic# = 0) d找到了TRACE文件,当然我是先清空了所有以前的TRACE如果很多的话可以使用ls -lrt 进行排序找最近的TRC文件。6、查看TRACE文件[oracle@localhost udump]$ more ORCL_ora_5035.trc文件很多内容,我所用到的只有前面几行。ORA-01438: value larger than specified precision allowed for this columnCurrent SQL statement for this session:insert into tony.tvalues(100000000)顺利找到语句.最后加一句如果想DISABLE掉可以使用SQL> alter system set events="1438 trace name Errorstack off";System altered 附件:Table 2-2 Storage of Scale and Precision
Actual DataSpecified AsStored As
123.89NUMBER123.89
123.89NUMBER(3)124
123.89NUMBER(6,2)123.89
123.89NUMBER(6,1)123.9
123.89NUMBER(3)exceeds precision
123.89NUMBER(4,2)exceeds precision
123.89NUMBER(6,-2)100
.01234NUMBER(4,5).01234
.00012NUMBER(4,5).00012
.000127NUMBER(4,5).00013
.0000012NUMBER(2,7).0000012
.00000123NUMBER(2,7).0000012
1.2e-4NUMBER(2,5)0.00012
1.2e-5NUMBER(2,5)0.00001
相关阅读:SPFILE 错误导致数据库无法启动(ORA-01565) http://www.linuxidc.com/Linux/2013-08/88932.htmORA-01172、ORA-01151错误处理 http://www.linuxidc.com/Linux/2013-06/86529.htmORA-00600 [2662]错误解决 http://www.linuxidc.com/Linux/2013-06/86528.htm更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12使用NX NoMachine 连接图形化界面安装OracleMySQL Workbench中文教程相关资讯      ORA-01438 
  • Oracle ORA-01438  (03/13/2014 08:29:45)
本文评论 查看全部评论 (0)
表情: 姓名: 字数

<