业务用户迁移数据中随着数据量增大原始exp、imp方式需要时间逐渐延长,而expdp、impdp可以利用系统性能最大化缩短迁移时间,expdp、impdp存在中文兼容问题无论用何种对象方式导入无法避免中文兼容性问题
经排查后确认为Oracle BUG 需单独打补丁20412068此问题
p20412068_112040_MSWIN-x86-64.zip
环境
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE 11.2.0.4.0 Production
TNS for 64-bit Windows: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 – Production
迁移后验证
源端库与目标库失效对象是否一致
迁移步骤
-
- 创建逻辑目录 (sys)
SQL>create directory dump_dir as 'd:\test\';
-
- 查看管理理员目录
SQL>select * from dba_directories;
-
- 给业务用户赋予在指定目录的操作权限,最好以system等管理员赋予
SQL> grant read,write on directory dump_dir to ambase;
-
- Expdp导出用户对象
Expdp ambase/ambase DIRECTORY=dump_dir dumpfile=full.dmp logfile=full.log
-
- Impdp导入表
impdp ambase/ambase directory=dump_dir dumpfile=full.dmp logfile=full.log
-
- 对比源端与目标端失效对象
select owner, object_name, object_type from dba_objects d
where status='INVALID'
-
- 编译失效对象(sys用户)
SQL> @?/rdbms/admin/utlrp.sql
通过补丁修复BUG 处理此问题