Oracle 的老版本数据迁移到新版本,不少人头疼。是从 10G 导出到 11G,还涉及不同用户、不同表空间?别慌,其实用好expdp
和impdp
这对 CP,事情就简单多了。你只要搞清楚几个核心点:目录对象要提前建好、权限要给够、表空间记得映射,基本就能跑通。
数据泵的操作挺直接的,expdp
导出、impdp
导入,命令看着有点长但其实一目了然。比如:
expdp susan/susan@orcl directory=data_pump_dir1 dumpfile=susan01.dmp
就是把susan01.dmp
文件。导入时如果换了用户或者表空间,用remap_schema
和remap_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_database
和imp_full_database
,不然多东西导不出来。
,如果你正准备从 10G 搬家到 11G,还换了用户和表空间,这篇指南挺值得一看。命令清晰、思路明了,照着做基本不会出岔子。
如果你想了解更复杂的场景,比如 RAC 环境的迁移,或者表空间单独转移的技巧,可以看看这些文章:
- Oracle RAC 数据迁移指南:使用 expdp 和 impdp
- oracle 表空间迁移指南
- ORACLE 数据库表空间迁移方法
- Linux 下创建 Oracle 用户表空间
- 使用 PL/SQL 在 Oracle 中创建表空间和用户
如果你刚好在做类似迁移操作,这份资料可以直接上手,不绕弯子。