由于客户要求,要把一个Oracle11g数据库迁移到一个Oracle10g ,由于deferred_segment_creation参数建库之初没有设置为false,并且目前存在空表,所以还是使用expdp和impdp。
1、expdp和rman相像的地方时都是在主机端(目标数据库端)生成dmp文件
所以文件夹和权限等都在主机端设置。
2、由于是从11g迁移到10g,所以expdp增加了一个参数 version
在需要迁移的目标数据库端执行 select * from v$version; 就知道version的值了,不然会报错。
【报错内容
ORA-39001: invalid argument value
ORA-39000: bad dump file specification
ORA-39142: incompatible version number
】
expdp opsteel/opsteel dumpfile=20150923.dmp logfile=exp20150923.log directory=expdp_dir schemas=opsteel version=10.2.0.1.0
3、impdp和 ORA-39125
这个错误出现在10.2.0.4之前的版本,需要加参数 exclude=statistics就可以
10.2.0.4是否不需要加,忘了测试了,明天测试一把,看metalink 10.2.0.4已经修订了这个BUG
【报错内容
ORA-39125: KUPW$WORKER.PUT_DDLS [DBMS_METADATA.CONVERT]调用出错
ORA-06502:
LPX-00210:
】
最终的impdp的语法
impdp opsteel/opsteel dumpfile=20150923.dmp logfile=imp20150923.log
DIRECTORY=impdp_dir SCHEMAS=opsteel version=10.2.0.1.0 exclude=statistics