CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Oracle >  基础和管理

oracel 8i for windows2000 imp 数据导入问题?

楼主jd27(小江飞刀)2003-10-03 23:01:19 在 Oracle / 基础和管理 提问

oracel   8i   for   windows2000   imp   导入500多万条记录的时候,cpu使用率达到100%,不再导入,有什么办法解决?请各位高手提供一些方案! 问题点数:100、回复次数:11Top

1 楼mfc168(子非鱼)回复于 2003-10-04 10:07:26 得分 50

我以前做过这样的东西,在数据量很大的时候,确实特别慢,你在导入的时候,不要指定direct=y,这样,就可以在CMD窗口看到进度  
  可以采用的方法是:分批处理,每次处理一个表,或者是通过写query将数据分成若干部分来导入Top

2 楼jd27(小江飞刀)回复于 2003-10-04 10:14:17 得分 0

谢谢mfc168(闶阆)兄的回答,可是imp参数里面没有query参数,而是在exp里面有这个参数啊。再就是我导人的文件里面只有一个表,在这个表里面有2000多万条,当导入到500多万条的时候cpu就占用到100%,无法再进行下去。这与数据库配置是否有关系?再就是direct参数也是只有exp有啊。是否还有其它的解决方法?Top

3 楼mfc168(子非鱼)回复于 2003-10-04 10:25:13 得分 0

你在imp的时候,表空间是否够用?  
  在exp的时候,采用query参数,确定只导出部分数据(例如:where   id<5000000),根据不同的条件形成几个文件,分别导入……  
   
  还有一种比较笨的方法:通过其他软件,如:ACCESS或者PB的数据库工具来实现,可以直接通过接口连接处理数据,或者是通过这些工具将数据文件导出为SQLLDR的格式,然后使用SQLLDR来导入数据  
   
  我以前做过人口数据,处理过上亿的数据,这方面积累很多经验,我想肯定可以帮你解决这个问题的:)Top

4 楼jd27(小江飞刀)回复于 2003-10-04 10:37:18 得分 0

我的表空间肯定够用的,那个dmp文件有800多M,那个表空间还有2个G空用。你提到的分别导入,但是目前我犯了一个错误就是我把这个原来的表已经drop掉了,目前只剩下一个dmp文件,所以不能分批导入。是否还有其他的办法可行?Top

5 楼mfc168(子非鱼)回复于 2003-10-04 11:02:26 得分 0

如果是其他问题,应该是根本导不进去,照你所说,是在500万左右的时候出现问题,那么就是一个容限问题了,首先是表空间是否够用,其次是数据文件是否占满了磁盘空间;你可以试一下重新建立一个用户及更大的表空间(前提是你的物理硬盘足够大),重新导入  
  如果还不行,考虑换一下系统,我们以前在处理200万以下数据的时候使用WIN,在大数据量的时候,采用小型机,SUN450等  
  我自己曾经研究过那个DMP文件,它是可识别的,根据自定义的格式存储,包括头文件(存表结构及字段信息),然后是数据文件(按照自己规定的分隔符来分隔数据)Top

6 楼jd27(小江飞刀)回复于 2003-10-04 11:21:08 得分 0

我想不是容限问题,因为另外一台比我还差的机器装有同样的系统,数据库版本也一摸一样,她就可以容纳2千万的记录,dmp文件就是从她那里产生,但是现在原来的table已经不在了,(让我欢喜让我忧),我的新机器没有理由比她差,我想知道dmp=841m,是否导入到数据库也会占用相同数量级的空间,以你的经验做imp的时候系统需要使用的资源瓶颈可能是哪里?我觉得需要调整数据库的参数改善性能,可否提供DMP文件的有关知识  
  谢谢你  
  Top

7 楼mfc168(子非鱼)回复于 2003-10-04 11:31:14 得分 0

表空间要远远大于你的DMP文件,这个是肯定的,那个文件格式是和你的数据库相关的,比较复杂,我当初是这样研究的:建立一个数据库,一个简单的表,只有2,3条记录,将它EXP出来,研究,然后,再建立一个表,再弄几条记录,再EXP……  
  这样,不断地增加表,增加数据量,设置不同的字段类型,你就会了解它的格式了  
   
  我是VC程序员,ORACLE用了两年多,刚到这个版块几天,我来CSDN也仅仅几个月而已,在这里学到了很多知识!Top

8 楼ccbzzp(ccbzzp)回复于 2003-10-04 12:03:40 得分 40

加參數BUFFER=   ...  
  COMMIT=Y  
   
  TRY'  
  Top

9 楼jd27(小江飞刀)回复于 2003-10-04 12:39:46 得分 0

我用的导数命令是:  
  imp   scott/tiger@orcdb   file=c:\cis.dmp   tables=d_cis   log=c:\cis_log   buffer=7000   recordlength=32   feedback=10000   commit=y  
  还是停在504万条cpu不干活了,cpu怎么了?谢谢回答Top

10 楼lilylamb(小羊羔)回复于 2003-10-04 12:50:24 得分 10

没理由的,我经常进行千万级的数据导入到处也没问题,每一次都要近200G,你可以不导入索引,indexes=n,我怀疑是你的索引问题,可以导入数据后在建立索引,还有问题在解决。  
  由于索引也会占用空间,所以必须将表空间大一些,你扩展到6g,表空间自动扩展设为512m,记得硬盘一定要远大于6g,如果停止可以imp界面多按几次回车,通常会有用的^_^。Top

11 楼ccbzzp(ccbzzp)回复于 2003-10-04 13:47:43 得分 0

那就把不該要的服務停止掉吧  
  Top

相关问题

  • imp导入
  • 数据导入问题(imp)
  • imp数据导入问题
  • C# Windows 应用程序怎样调用 Oracle 的 imp 程序导入数据?
  • 超大表IMP导入出错???求救
  • 用 IMP 导入数据的问题
  • imp导入的问题,谢谢!!!
  • 急!!oracle的IMP数据导入问题?
  • 请教:imp导入表的问题
  • imp导入表的问题,在线等...

关键词

  • windows2000
  • 数据
  • 导入
  • imp
  • 参数
  • 表
  • 时候
  • 是否
  • query

得分解答快速导航

  • 帖主:jd27
  • mfc168
  • ccbzzp
  • lilylamb

相关链接

  • Oracle类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo