04-expdp-impdp数据泵迁移实战

04-expdp-impdp数据泵迁移实战 expdp/impdp数据泵迁移实战——从11g到19c的社保数据迁移社保系统从11g迁到19c不是imp/exp这种古董工具能搞定的。数据泵Data Pump可以并行导出、按表过滤、跨版本迁移。这篇文章记录一次真实的数据泵迁移过程——从准备到验证全流程。文章目录expdp/impdp数据泵迁移实战——从11g到19c的社保数据迁移一、为什么不用 imp/exp二、创建导出目录三、导出命令四、导入命令五、监控导出进度六、跨版本兼容性七、常见坑八、迁移检查清单一、为什么不用 imp/exp特性旧版 imp/exp新版 expdp/impdp执行位置客户端服务端更接近磁盘并行度不支持支持多线程并行网络传输不支持支持跨网络直接导入大表处理容易内存溢出流式处理粒度控制表级别支持排除对象、过滤条件社保库GRJF表39MB、UNIT_PAYMENT45MB、PENSION_DETAIL94MB——用旧版 imp 导到一半就内存溢出数据泵可以并行导出。二、创建导出目录-- 在源库创建目录对象需要物理路径已存在CREATEORREPLACEDIRECTORY dpump_dirAS/data/pump;GRANTREAD,WRITEONDIRECTORY dpump_dirTOsystem;mkdir-p/data/pumpchownoracle:oinstall /data/pump三、导出命令全库导出expdp system/密码orcl\DIRECTORYdpump_dir\DUMPFILEfull_%U.dmp\LOGFILEexp_full.log\FULLY\PARALLEL4\COMPRESSIONALL%U——自动编号并行4线程生成 full_01.dmp 到 full_04.dmpCOMPRESSIONALL——压缩数据和元数据社保库约能压到原来的60%PARALLEL4——4线程并行适合多核CPU按 Schema 导出expdp system/密码orcl\DIRECTORYdpump_dir\DUMPFILEschema_%U.dmp\SCHEMAS\LOGFILEexp_schema.log\PARALLEL2只导某些表expdp system/密码orcl\DIRECTORYdpump_dir\DUMPFILEtables_%U.dmp\TABLESPAYMENT_HISTORY,PERSON_INFO,UNIT_PAYMENT\LOGFILEexp_tables.log四、导入命令全库导入# 先在目标库建表空间路径要和源库一致或改造impdp system/密码orcl_new\DIRECTORYdpump_dir\DUMPFILEfull_%U.dmp\LOGFILEimp_full.log\FULLY\PARALLEL4表空间路径不同时的改造impdp system/密码orcl_new\DIRECTORYdpump_dir\DUMPFILEfull_%U.dmp\REMAP_TABLESPACEOLD_TBS:NEW_TBS\REMAP_SCHEMAOLD_USER:NEW_USER\LOGFILEimp_remap.logREMAP_TABLESPACE把源库表空间自动映射到目标库表空间不用手动建表改DDL。五、监控导出进度-- 查看正在运行的JOBSELECTJOB_NAME,STATE,DEGREE,ATTACHED_SESSIONSFROMDBA_DATAPUMP_JOBS;-- 查看详细进度%SELECTOPNAME,TARGET,SOFAR,TOTALWORK,ROUND(SOFAR/TOTALWORK*100,2)ASPCTFROMV$SESSION_LONGOPSWHEREOPNAMELIKEData Pump%;六、跨版本兼容性操作说明11g导出 → 19c导入用11g的expdp导出19c的impdp导入完全兼容19c导出 → 11c导入用19c的expdp加VERSION11.2参数大版本跨度超过2个大版本建议用VERSION明确指定七、常见坑1. 目录权限问题——ORA-39002# 确认目录存在且oracle用户有权限ls-la/data/pumpchmod750/data/pump2. 表空间不一致——导入时表空间不存在用REMAP_TABLESPACE自动重映射或在目标库先建同名表空间。3. 大表导入慢加大PARALLEL但要确保CPU和IO扛得住。经验值PARALLELCPU核数/2。4. 字符集不一致-- 源库和目标库字符集必须一致或目标库是源库的超集SELECT*FROMNLS_DATABASE_PARAMETERSWHEREPARAMETERNLS_CHARACTERSET;八、迁移检查清单-- 导入后验证-- 对象数SELECTCOUNT(*)FROMDBA_OBJECTSWHEREOWNER;-- 行数抽查SELECTCOUNT(*)FROMPAYMENT_HISTORY;SELECTCOUNT(*)FROMPERSON_INFO;-- 失效对象SELECTOBJECT_NAME,OBJECT_TYPEFROMDBA_OBJECTSWHEREOWNERANDSTATUSINVALID;-- 重新编译失效对象EXECUTL_RECOMP.RECOMP_SERIAL();✅ 亮点社保系统实际迁移场景——表空间路径不一致、跨版本兼容、并行度调优——都给出了可复现的命令。扩展方向expdp/impdp网络直传模式NETWORK_LINK、RMAN可传输表空间迁移对比。