解决思路: (1)跟踪执行插入的SQL/存储过程,找到罪魁祸首的行,修改后再次插入。 (2)最简单的办法就是增加目的字段的精度。
解决思路:
(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
F2移动可视化解决方案,一个专注于移动,开箱即用的可视化解决方案,完美支持 H5 环境同时兼容多种环境(node, 小程序,weex)。完备的图形语法理论,满足你的各种可视化需求。专业的移动设计指引为你带来最佳的移动端图表体验。
1
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]错误解决

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号