IMP-00058, ORA-1438

本文介绍了解决Oracle数据库导入过程中遇到的IMP-00058及ORA-01438错误的方法。主要原因是由于导出数据库中的表结构与导入目标数据库中的表结构不匹配导致。文章通过示例展示了如何定位问题并修复,包括更改表定义或使用特定参数忽略错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Subject: Import Fails with IMP-00058, ORA-1438 Errors Doc ID: Note:185229.1 Type: PROBLEM Last Revision Date: 28-JUL-2005 Status: PUBLISHED fact: Oracle Server - Enterprise Edition fact: Export Utility (EXP) fact: Import Utility (IMP) symptom: Running an import fails symptom: IMP-00058: ORACLE error 1438 encountered symptom: ORA-01438: value larger than specified precision allows for this column symptom: IMP-00018: partial import of previous table completed: 178731 rows imported cause: These symptoms can unfortunately be encountered if there is some form of corruption within the EXPORT database. However it can also be encountered when IMPORTING into the same or new database where the table has been recreated with an incorrect column definition. fix: The fix will depend on whether the symptoms are caused due to corruption or due to the incorrect creation of objects. If the former then it will be necessary to handle the corruption problem first and there is no set procedure for this since it will depend on scale. If the latter we should be able to workaround the problem using a testcase to explain the principles involved :- EXPORT DATABASE --------------- sqlplus system/manager create user exporttest identified by exporttest default tablespace USERS; grant dba to exporttest connect exporttest/exporttest create table precisiontest (num number(2)); insert into precisiontest values ('10'); --------------&gt this will work as expected commit; exit; exp exporttest/exporttest file=expdat.dmp tables=precisiontest IMPORT DATABASE --------------- (if the same as the EXPORT database then assume that we have dropped and recreated the table, also no need to recreate the user exporttest) sqlplus system/manager create user exporttest identified by exporttest default tablespace USERS; grant dba to exporttest connect exporttest/exporttest create table precisiontest (num number(1)); commit; exit; imp exporttest/exporttest file=expdat.dmp tables=precisiontest ignore=y The IMPORT will fail with IMP-00058 and ORA-01438 errors because we are now attempting to insert the value '10' into a column that has been defined as NUMBER(1). If export and import databases are different we can do a DESCRIBE on the table in question to see if they are the same. If only one database exists we can look at rerunning the IMPORT with :- event="1438 trace name errorstack level 10" This will show us what record we are failing on and will hopefully indicate what column needs to be corrected within the table so that the IMPORT can be performed successfully.[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/190276/viewspace-902822/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/190276/viewspace-902822/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值