Oracle 数据导入导出迁移总结

接到电话,要将山西太远教育局的应用的数据 导入到 本地来,做测试和分析用。跟工作人员联系后,得知那边采用的是Oracle的数据库,而且不能远程登录操作,使用QQ的远程桌面也无法链接后,就只要我写操作命令给对方,让他在那边操作。

开始人家提出要把Oracle的相关的所有数据拷贝过来,我吓一大跳,那怎么行?要拷贝的东西很多哈,什么数据文件,控制文件,日志文件,还要记录那边的目录结构,我这边才能还原那边的环境。要是你拷贝的时候,把一些东西少拷了,那一来一回,不是还要浪费更多的时间,所以拷贝物理文件来还原的方法就不推荐了。况且人家那边连目录结构都不是很清除的。

然后人家又提出有PL/SQL developer 的图形界面工具要到,那个我可是没有用过哈。还是用命令的比较方便。叫对方用cmd,用sqlplus。然后就使用expdp命令来导出数据了。不过,对方的服务器上这个命令却执行不了。后来叫他截图过来看了,居然是Ora 9的数据库,当然没有expdp的命令,只有exp的拉。发给他一个命令

exp username/password file=google.dmp owner=user

导出了数据。通过ftp传到本地后,

在导入的时候

imp username/password file=google.dmp fromuser=user

提示说:

IMP-00010: not a valid export file, header failed verification

最后发现是在命令行使用ftp命令的问题,没有采用二进制格式传输。所以希望大家在传输时,最好能讲这个文件先压缩成.zip文件,在linux这边获取后用unzip 来解压。还有,那边的环境是winows的。问了那边的系统管理员的,也就是所谓的DBA,居然什么都不知道,就只知道用那个图形工具来备份系统。

再次导入,居然还是有问题:

IMP-00032: SQL statement exceeded buffer length

呵呵,这个问题还办,是由于在导入的时候,使用的是默认的buffer参数,不够长了。加上参数继续

imp username/password file=google.dmp fromuser=user buffer=100000 logfile=imp.log

这样可以记录日志,过后再来看导入的情况。

IMP-00003: ORACLE error 959 encountered
ORA-00959: tablespace 'SMSH' does not exist
IMP-00017: following statement failed with ORACLE error 959:

居然又有错误,看来是表空间没有建立。网上搜索了下,发现说加上参数touser=user就可以了,但我这边还是会存在959的提示。不知道怎么搞的。

那就只有重新创建表空间,创建用户,指定默认的表空间。继续,成功了哈。

过程比较曲折,结构比较简单。这里对自己的这次导入导出问题,写个总结,提醒自己,有些流程还是做好,比如要获取对方的数据库版本,操作系统等信息,这个还是必要的。还有就是要对dmp文件进行压缩,压缩比还是比较高的。希望以后自己导入能比较顺利哈。

0 Comments:

Post a Comment



较新的博文 较早的博文 主页