求助大神,新人初学Oracle在数据导入的过程中遇到问题,有没有亲们能帮忙看看怎么解决!!!

[复制链接]
查看11 | 回复10 | 2021-1-27 06:27:38 | 显示全部楼层 |阅读模式
新人初学Oracle,在导入一个DMP数据的过程中一直报错


在网上查阅方法都解决不了,然后我自己试了下新建了一个VEHICLE_POSITION表,然后进行导入,还是会报错,但是提示表不存在的报错没了,报错是这样


权限不足的问题,按照网上查阅的方案也是解决不了,给新建用户该授予的权限也都授予了,然后我试了在Oracle默认用户新建表格VEHICLE_POSITION,然后导入的默认用户中,还是不成功,但是什么错误都不提示了

求助各位大神,指导一下。
分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:27:38 | 显示全部楼层
导出和导入语句是怎样的?
回复

使用道具 举报

千问 | 2021-1-27 06:27:38 | 显示全部楼层
引用1楼minsic78的回复:导出和导入语句是怎样的?
impImpc##GF/123456file=D:\app\GF\oradata\VEHICLE_POSITION_20150612.dmpfull=yignore=y
回复

使用道具 举报

千问 | 2021-1-27 06:27:38 | 显示全部楼层
引用2楼fenghuanggf23的回复:Quote: 引用1楼minsic78的回复:
导出和导入语句是怎样的?

impImpc##GF/123456file=D:\app\GF\oradata\VEHICLE_POSITION_20150612.dmpfull=yignore=y

你这只是两个用户之间对象的导出和导入,就别用full了,用fromuser=taxicdtouser=c##GF就够了
回复

使用道具 举报

千问 | 2021-1-27 06:27:38 | 显示全部楼层
引用2楼fenghuanggf23的回复:Quote: 引用1楼minsic78的回复:
导出和导入语句是怎样的?

impImpc##GF/123456file=D:\app\GF\oradata\VEHICLE_POSITION_20150612.dmpfull=yignore=y

从别处拿到的数据,不知道导出语句,导入语句就是上面这个,嗯多写了一个imp
回复

使用道具 举报

千问 | 2021-1-27 06:27:38 | 显示全部楼层
引用3楼minsic78的回复:Quote: 引用2楼fenghuanggf23的回复:
Quote: 引用1楼minsic78的回复:
导出和导入语句是怎样的?

impImpc##GF/123456file=D:\app\GF\oradata\VEHICLE_POSITION_20150612.dmpfull=yignore=y

你这只是两个用户之间对象的导出和导入,就别用full了,用fromuser=taxicdtouser=c##GF就够了

你说的这个也试过,跟用full一样的
回复

使用道具 举报

千问 | 2021-1-27 06:27:38 | 显示全部楼层
仔细看了下主题贴,如果不是BUG之类的缘故,有没有这么个可能?
这张导入的表上的约束或者说主键包含的唯一索引是属于其他用户,而不是TAXICD用户的?楼主可以通过imp的INDEXFILE选项来生成该表的DDL语句看下,很可能就是这种表与索引属于不同用户的情况,如果是这样的话就比较好处理了:
先通过INDEXFILE选项得到的DDL语句创建表,如果表数据量比较小的话,可以把主键也先建上,然后再通过ignore=y或者data_only=y参数来完成数据的导入,如果表数据量比较大,那么可以先导入数据,导入完成之后再加主键。
回复

使用道具 举报

千问 | 2021-1-27 06:27:38 | 显示全部楼层
引用6楼minsic78的回复:仔细看了下主题贴,如果不是BUG之类的缘故,有没有这么个可能?
这张导入的表上的约束或者说主键包含的唯一索引是属于其他用户,而不是TAXICD用户的?楼主可以通过imp的INDEXFILE选项来生成该表的DDL语句看下,很可能就是这种表与索引属于不同用户的情况,如果是这样的话就比较好处理了:
先通过INDEXFILE选项得到的DDL语句创建表,如果表数据量比较小的话,可以把主键也先建上,然后再通过ignore=y或者data_only=y参数来完成数据的导入,如果表数据量比较大,那么可以先导入数据,导入完成之后再加主键。

是用impc##GF/123456file=D:\app\GF\oradata\VEHICLE_POSITION.dmpindexfile=D:\app\GF\oradata\VEHICLE_POSITION.idxfull=y这个语句吗,我用这个也报错了
回复

使用道具 举报

千问 | 2021-1-27 06:27:38 | 显示全部楼层
引用7楼fenghuanggf23的回复:Quote: 引用6楼minsic78的回复:
仔细看了下主题贴,如果不是BUG之类的缘故,有没有这么个可能?
这张导入的表上的约束或者说主键包含的唯一索引是属于其他用户,而不是TAXICD用户的?楼主可以通过imp的INDEXFILE选项来生成该表的DDL语句看下,很可能就是这种表与索引属于不同用户的情况,如果是这样的话就比较好处理了:
先通过INDEXFILE选项得到的DDL语句创建表,如果表数据量比较小的话,可以把主键也先建上,然后再通过ignore=y或者data_only=y参数来完成数据的导入,如果表数据量比较大,那么可以先导入数据,导入完成之后再加主键。

是用impc##GF/123456file=D:\app\GF\oradata\VEHICLE_POSITION.dmpindexfile=D:\app\GF\oradata\VEHICLE_POSITION.idxfull=y这个语句吗,我用这个也报错了

如果这样的话,如果想要判断清楚具体问题就比较麻烦了,如果是生产数据库的话以下操作要慎重:
1、打开全库一级的1031错误跟踪:
altersystemsetevents'1031tracenameerrorstackforever,level3';
2、imp导入,报错,找到imp会话对应的trc文件,通常是最新的跟踪文件,如果是11g,跟踪文件的目录在user_dump_dest实例参数指定的目录下,按照文件时间戳倒序找吧
3、找到跟踪文件后,可以看到更多关于ORA-1031错误的信息,可以做进一步的诊断。
如果是生产库,觉得这么做有隐患,或者觉得以上过程太麻烦了,那么建议联系数据源的数据库管理员,去看看这张表上的约束有何特别之处,除了是不是属于其他用户之外,还应该考虑是否会有外键引用其他用户的对象,而这个用户,在目标库中是不存在的。
另外,实际上imp已经到了启用约束这一步,表里的数据应该是导入的,如果只要数据的话,到这一步就已经OK了,如果你每次使用ignore=y来导入数据,这张表里的数据可能已经有重复的了。

回复

使用道具 举报

千问 | 2021-1-27 06:27:38 | 显示全部楼层
补充下,忘了提醒了,如果打开了1031的errorstack,那么跟踪完毕后记得将其关闭:
altersystemsetevents'1031tracenameerrorstackoff';
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行