当前位置:  数据库>oracle

ORA-01438解决方法

    来源: 互联网  发布时间:2017-05-26

    本文导语: 解决思路: (1)跟踪执行插入的SQL/存储过程,找到罪魁祸首的行,修改后再次插入。 (2)最简单的办法就是增加目的字段的精度。   由于定位不到具体的表以及具体的字段,需要跟踪错误 1、首先进行建立表 SQL> create table t (...

解决思路:

(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、进行系统设置改变进行TRACE

alter 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 column

5、在后台系统

[Oracle@localhost udump]$ pwd

/home/oracle/admin/ORCL/udump

[oracle@localhost udump]$ ls

ORCL_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 column

Current SQL statement for this session:

insert into tony.t

values(100000000)

顺利找到语句.

最后加一句如果想DISABLE掉可以使用

SQL> alter system set events='1438 trace name Errorstack off';

System altered

 

附件:Table 2-2 Storage of Scale and Precision

Actual Data

Specified As

Stored As

123.89

NUMBER

123.89

123.89

NUMBER(3)

124

123.89

NUMBER(6,2)

123.89

123.89

NUMBER(6,1)

123.9

123.89

NUMBER(3)

exceeds precision

123.89

NUMBER(4,2)

exceeds precision

123.89

NUMBER(6,-2)

100

.01234

NUMBER(4,5)

.01234

.00012

NUMBER(4,5)

.00012

.000127

NUMBER(4,5)

.00013

.0000012

NUMBER(2,7)

.0000012

.00000123

NUMBER(2,7)

.0000012

1.2e-4

NUMBER(2,5)

0.00012

1.2e-5

NUMBER(2,5)

0.00001

相关阅读:

SPFILE 错误导致数据库无法启动(ORA-01565)

ORA-01172、ORA-01151错误处理

ORA-00600 [2662]错误解决


    
 
 

您可能感兴趣的文章:

  • oracle ORA-01114、ORA-27067错误解决方法
  • Orcle的package中访问其它Schema的表报错ORA-00942解决方法
  • oracle远程连接服务器出现 ORA-12170 TNS:连接超时 解决办法
  • 解决报错ora-32035的方法分析
  • ORA-12514及ORA-28547错误解决方案
  • 基于ORA-12170 TNS 连接超时解决办法详解
  • 安装oracle出现error:ora-01031:insufficient privilleges的解决
  • plsql连接oracle数据库报ora 12154错误解决方法
  • zilong28提问:Tomcat3.2报错内容是Error occurs when connecting DB: ORA-00020: maximum number of processes(59) exceeded 我应该如何解决,先谢了
  • ORA-28002 Oracle 11g存在密码过期问题解决方案
  • Linux 下数据库oracle出现ORA-27102错误的解决办法
  • Oracle ORA-22908(NULL表值的参考)异常分析与解决方法
  • PHP连接Oracle错误ORA-24324服务句柄未初始化的解决方法
  • ORACLE出现错误1033和错误ORA-00600的解决方法
  • 如何解决ORA-01843与NLS_DATE_FORMAT问题
  • oracle 11g导出数据时报ORA 1455错误的处理方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 出现ORA-01401和ORA-01008错误?
  • Eclipse连接Oracle数据库的ORA-00604 ORA-12705错误
  • Oracle不能删除表 ORA-00604 ORA-01422 错误
  • 如何得到带有ora的行的下一行
  • 如何配置 linux 下 oracle 的 listener .ora 和
  • 浅析如何在tnsnames.ora中配置监听
  • [Oracle] 浅析令人抓狂的ORA-01555问题
  • aq.executeQuery: ORA-00020: maximum number of processes (59) exceeded
  • Oracle 数据库闪回功能设置出现ORA-19809和ORA-19804错误
  • ORA-00947:Not enough values (没有足够的值)的深入分析
  • solaris10 安装 ora9.2.0.1 时报错
  • 在UNIX下,我的ORA817该怎么样才可以自己启动呀?
  • 谁能帮忙解释一下: ORA-01000 : maximun open cursors exceeded
  • 关于Oracle游标的问题(ORA-01000: maximum open cursors exceeded)
  • 我在Linux7。3下面装了一个Oracle8i,但是现在启动不起来了,总是报错ORA-01031: insufficient privileges
  • oracle报错(ORA-00600)问题处理
  • 为什么我读取数据库时出现:ORA-00600: 内部错误代码,参数: [ttcgcshnd-1], [0], [],错误?
  • 网络技术 iis7站长之家
  • 在客户端配置TNS测试报错ORA-12170:TNS:连接超时


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,