Oracle 的老版本数据迁移到新版本,不少人头疼。是从 10G 导出到 11G,还涉及不同用户、不同表空间?别慌,其实用好expdpimpdp这对 CP,事情就简单多了。你只要搞清楚几个核心点:目录对象要提前建好、权限要给够、表空间记得映射,基本就能跑通。

数据泵的操作挺直接的,expdp导出、impdp导入,命令看着有点长但其实一目了然。比如:

expdp susan/susan@orcl directory=data_pump_dir1 dumpfile=susan01.dmp
就是把用户的所有数据导成susan01.dmp文件。

导入时如果换了用户或者表空间,用remap_schemaremap_tablespace就行了,像这样:

impdp newuser/newpass@orcl directory=data_pump_dir1 dumpfile=susan01.dmp remap_schema=susan:newuser remap_tablespace=old_ts:new_ts
一行命令搞定用户和表空间的切换。

目录对象也别忘了建,比如:

CREATE DIRECTORY data_pump_dir1 AS 'D:\datapump';
给权限:GRANT READ,WRITE ON DIRECTORY data_pump_dir1 TO susan;,否则导入导出都白搭。

再提醒一句,权限问题最容易踩坑。除了连接和资源权限,记得给exp_full_databaseimp_full_database,不然多东西导不出来。

,如果你正准备从 10G 搬家到 11G,还换了用户和表空间,这篇指南挺值得一看。命令清晰、思路明了,照着做基本不会出岔子。

如果你想了解更复杂的场景,比如 RAC 环境的迁移,或者表空间单独转移的技巧,可以看看这些文章:

如果你刚好在做类似迁移操作,这份资料可以直接上手,不绕弯子。