今天有同事问我:
我在使用oracle的expdp,impdp命令的时候遇到了一点问题,想请教你一下。
我需要从HKPROD库中导出数据库的元数据,导入另一个测试库wide中。
我从HKPROD库中导出了两个dmp文件,使用的语句如下:
expdp hkhk/uniface@hkprod dumpfile=hkprod_hkhk.dmp schemas=hkhk exclude=index content=metadata_only logfile=hkprod_hk_exp_metadata.log
expdp hkhk/uniface@hkprod dumpfile=hkprod_hkhk_index.dmp schemas=hkhk include=index content=metadata_only logfile=hkprod_hk_exp_index.log
日志文件在附件里面。
再将这两个dmp文件导入我们的测试库WIDE时,出现了问题。
不包含index的那个dmp(hkprod_hkhk.dmp )正常的导入了,包含index的那个hkprod_hkhk_index.dmp,出现了问题。
Import: Release
Copyright (c) 2003, 2005, Oracle. All rights reserved.
Connected to: Oracle Database
With the Partitioning, OLAP and Data Mining options
ORA-39001: invalid argument value
ORA-39000: bad dump file specification
ORA-31619: invalid dump file "/bspu01/app/ssv2/hkprod_hkhk_index.dmp"
使用的imp命令如下:
1、impdp yutao/uniface@wide DIRECTORY=dir_yutao DUMPFILE=hkprod_hkhk.dmp remap_schema=hkhk:yutao EXCLUDE=statistics TABLE_EXISTS_ACTION=skip content=metadata_only logfile=hkprod_hkhk REMAP_TABLESPACE=HKHK:AUAU REMAP_TABLESPACE=HKHKIDX:AUAU REMAP_TABLESPACE=HKHKARC:AUAU
2、
impdp yutao/uniface@wide directory=dir_yutao dumpfile=hkprod_hkhk_index.dmp remap_schema=hkhk:yutao EXCLUDE=statistics include=index TABLE_EXISTS_ACTION=truncate content=metadata_only logfile=hkprod_hkhk_index REMAP_TABLESPACE=HKHK:AUAU REMAP_TABLESPACE=HKHKIDX:AUAU REMAP_TABLESPACE=HKHKARC:AUAU
我自己分析:
1、文件夹的路径没错。dir_yutao 是我新建的,路径指向的确实是/bspu01/app/ssv2
2、dmp文件是从AIX机器上ftp下来的,然后我用u盘拷回了自己的电脑,然后再拷贝到我们的测试机wide上面操作的。 ftp下载的时候传输格式是binary。
3、yutao这个schema也是新建的,然后赋权限了
-- Grant/Revoke role privileges
grant connect to YUTAO;
grant dba to YUTAO with admin option;
grant exp_full_database to YUTAO;
grant imp_full_database to YUTAO;
-- Grant/Revoke system privileges
grant create any table to YUTAO;
grant execute any procedure to YUTAO;
grant select any table to YUTAO;
grant unlimited tablespace to YUTAO with admin option;
4、数据库的版本不同,导出数据的库是
这两个dmp文件,第一个成功了。但是第二个不成功,很奇怪。
这个当我一看完他信的内容,我就知道原因了,因为我曾经看过549750.1,个人感觉metalink是最好的老师了,里面的资源几乎是无限的,只要你肯下功夫去看,去积累,这样当你碰到问题的时候你就能保持一定的敏感度。
上述问题是expdp/impdp里很普遍的问题,高版本的目标数据库在读低版本的源数据库的由expdp产生的文件的时候很可能会产生上述错误,解决方法就是本着一个"就低不就高"的原则,比如对于上述问题而言,只需要在源数据库执行expdp的时候加上version=
其实不光expdp/impdp有这样的问题,exp/imp一样也会有。比如:
Leave a comment