这两天遇到一个由于使用自定义类型导致dmp文件无法导入的问题,网上提问的多,但响应较少。
最后得到一网友提示用imp工具中indexfile参数并参考《Expert ORACLE》,终于解决了问题。
《Expert ORACLE》中写的比较详细,E文不好,请参考下面的链接:
imp操作步骤:
1、将dmp文件导入数据库
C:\TMP> imp test/test@orcl file=expdat.dmp log=impdat.log ignore=y fromuser=test touser=test
2、检查impdat.log,把所有含create type的sql找出来并整理脚本,将含OID=‘XXXXXXXXXXXXX’删除,再用test登录数据库,将这些type手工建一遍
3、再用imp工具生成indexfile,此时不会再导入数据,但会生成一test.sql脚本
C:\TMP> imp test/test@orcl file=expdat.dmp log=impdat.log ignore=y fromuser=test touser=test indexfile=test.sql
4、整理test.sql,去掉REM注释及OID等 ,用test登录数据库,执行该脚本
5、用imp工具将未导入的表重新导入一次。
C:\TMP> imp test/test@orcl file=expdat.dmp log=impdat.log ignore=y fromuser=test touser=test tables=(tableA ,TableB,……)
供同样被此问题困扰的朋友参考,欢迎指正。
以下是网上搜来的一段LOG,与我的问题类似。
-----------------------------------------------------------------------------------------
C:\> imp
Import: Release 9.2.0.1.0 - Production on 星期二 7月 1 11:13:42 2003
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
用户名: liu/liu@njhk
连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
导入文件: EXPDAT.DMP> d:\asmes.dmp
输入插入缓冲区大小(最小为 8192 ) 30720>
经由常规路径导出由EXPORT:V09.02.00创建的文件
警告: 此对象由 ASMES 导出, 而不是当前用户
已经完成ZHS16GBK字符集和AL16UTF16 NCHAR 字符集中的导入
只列出导入文件的内容 (yes/no): no >
由于对象已存在, 忽略创建错误 (yes/no): no >
导入权限 (yes/no): yes >
导入表数据 (yes/no): yes >
导入整个导出文件 (yes/no): no > yes
. 正在将ASMES的对象导入到 LIU
IMP-00017: 由于 ORACLE 的 2304 错误,以下的语句失败
"CREATE TYPE "航路段_序列 " TIMESTAMP '2002-12-02:10:54:02 ' OID 'DE50C0F611F1 "
"4AE78857BE3745432F2F ' "
" AS TABLE OF NUMBER(5,0); "
IMP-00003: 遇到 ORACLE 错误 2304
ORA-02304: 无效的对象标识文字
. . 正在导入表 "飞情区边界线_边界点序列__TAB " 127行被导入
. . 正在导入表 "飞行时间经验数据表 " 101行被导入
. . 正在导入表 "覆盖表 " 0行被导入
. . 正在导入表 "各点数据表 " 549行被导入
. . 正在导入表 "关闭L路径表 " 194行被导入
. . 正在导入表 "管制地带 " 0行被导入
. . 正在导入表 "管制地带边界线 " 0行被导入
. . 正在导入表 "管制地带边界线_边界点序列_TAB " 0行被导入
. . 正在导入表 "管制区 " 70行被导入
. . 正在导入表 "管制区边界线 " 70行被导入
. . 正在导入表 "管制区边界线_边界点序列_TAB " 768行被导入
. . 正在导入表 "广州区域航线结构 " 16行被导入
IMP-00063: 警告: 跳过表 "LIU ". "航班航线 ",因为无法创建对象类型 "LIU ". "航路段_序
列 " 或它具有不同的标识符
. . 正在导入表 "航班时刻表 " 5053行被导入
. . 正在导入表 "航迹融合数据 " 686行被导入
. . 正在导入表 "航空器性能 " 63行被导入
IMP-00063: 警告: 跳过表 "LIU ". "航路 ",因为无法创建对象类型 "LIU ". "航路段_序列 "
或它具有不同的标识符
. . 正在导入表 "航路点 " 2542行被导入
. . 正在导入表 "航路段 " 1222行被导入
. . 正在导入表 "航路容量评估结果表 " 16行被导入
. . 正在导入表 "航线高度配备 " 1行被导入
. . 正在导入表 "弧线点表 " 61行被导入
. . 正在导入表 "华北区域边界 " 2行被导入
. . 正在导入表 "华北区域航线结构 " 26行被导入
. . 正在导入表 "滑行道 " 0行被导入
. . 正在导入表 "机场 " 503行被导入
. . 正在导入表 "建筑点数据表 " 249行被导入
. . 正在导入表 "进出点 " 155行被导入
. . 正在导入表 "三区边界线 " 225行被导入
. . 正在导入表 "三区边界线_边界点序列_TAB " 1216行被导入
. . 正在导入表 "扇区 " 93行被导入
. . 正在导入表 "扇区边界线 " 93行被导入
. . 正在导入表 "扇区边界线_边界点序列_TAB " 40714行被导入
. . 正在导入表 "实际航班 " 791行被导入
. . 正在导入表 "脱离道 " 0行被导入
. . 正在导入表 "位置点 " 75行被导入
. . 正在导入表 "位置推算调整输出表 " 12行被导入
. . 正在导入表 "位置推算临时数据表_初始预计 " 12行被导入
. . 正在导入表 "预测模型参数表 " 0行被导入
. . 正在导入表 "月度流量统计 " 0行被导入
. . 正在导入表 "障碍物 " 0行被导入
. . 正在导入表 "障碍物数据表 " 90行被导入
. . 正在导入表 "终端区容量评估参数表 " 46行被导入
. . 正在导入表 "终端区容量数据表 " 99行被导入
. . 正在导入表 "终端区实际飞行评估结果 " 50行被导入
. . 正在导入表 "总局停机位表 " 114行被导入
IMP-00017: 由于 ORACLE 的 942 错误,以下的语句失败
"ALTER TABLE "航班时刻表 " ADD CONSTRAINT "航班时刻表_航班航线ID_FK " FOREIGN "
"KEY ( "航班航线ID ") REFERENCES "航班航线 " ( "航班航线ID ") ENABLE NOVALIDATE "
IMP-00003: 遇到 ORACLE 错误 942
ORA-00942: 表或视图不存在
IMP-00017: 由于 ORACLE 的 942 错误,以下的语句失败
"ALTER TABLE "航线高度配备 " ADD CONSTRAINT "航线高度配备_航班航线ID_FK " FORE "
"IGN KEY ( "航班航线ID ") REFERENCES "航班航线 " ( "航班航线ID ") ENABLE NOVALIDA "
"TE "
IMP-00003: 遇到 ORACLE 错误 942
ORA-00942: 表或视图不存在
IMP-00017: 由于 ORACLE 的 942 错误,以下的语句失败
"CREATE TRIGGER "LIU ".航班航线_update_trigger "
"BEFORE UPDATE OF 航班航线ID ON 航班航线 "
"FOR EACH ROW "
"BEGIN "
" RAISE_APPLICATION_ERROR(-20008, '航班航线_update_trigger: ' '航班航线ID ' '字
段 "
"的值由序列自动生成,不能进行人工修改 '); "
"END; "
IMP-00003: 遇到 ORACLE 错误 942
ORA-00942: 表或视图不存在
IMP-00017: 由于 ORACLE 的 942 错误,以下的语句失败
"CREATE TRIGGER "LIU ".航路_update_trigger "
"BEFORE UPDATE OF 航路ID ON 航路 "
"FOR EACH ROW "
"BEGIN "
" RAISE_APPLICATION_ERROR(-20006, '航路_update_trigger: ' '航路ID ' '字段的值由
序 "
"列自动生成,不能进行人工修改 '); "
"END; "
IMP-00003: 遇到 ORACLE 错误 942
ORA-00942: 表或视图不存在
IMP-00017: 由于 ORACLE 的 942 错误,以下的语句失败
"ANALYZE TABLE "航路 " ESTIMATE STATISTICS "
IMP-00003: 遇到 ORACLE 错误 942
ORA-00942: 表或视图不存在
准备启用约束条件...
IMP-00017: 由于 ORACLE 的 2430 错误,以下的语句失败
"ALTER TABLE "航班时刻表 " ENABLE CONSTRAINT "航班时刻表_航班航线ID_FK " "
IMP-00017: 由于 ORACLE 的 2430 错误,以下的语句失败
"ALTER TABLE "航线高度配备 " ENABLE CONSTRAINT "航线高度配备_航班航线ID_FK " "
成功终止导入,但出现警告。
--- The End ---
阅读(6561) | 评论(0) | 转发(0) |