这篇文章给大家介绍如何解决Oracle expdp/impdp数据迁移过程中字符集不一致的问题,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

前提:
源端字符集:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
目标端字符集:AMERICAN _ AMERICA. AL32UTF8

1.查询源端和目标端字符集类型:select userenv(‘language’) from dual;

2.修改目标端字符集:

3.shutdown immediate;

4.STARTUP MOUNT;

5.ALTER SYSTEM ENABLE RESTRICTED SESSION;

6.ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

7.ALTER SYSTEM SET AQ_TM_PROCESSES=0;

8.ALTER DATABASE OPEN;

9.ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;

10.alter system set NLS_LANGUAGE='SIMPLIFIED CHINESE' scope=spfile;

11.alter system set NLS_TERRITORY='CHINA' scope=spfile;

12.shutdown immediate;

13.startup;

14.再次查看可看到字符集已与源端字符集一致。

15.将导出的DMP文件上传到Linux的/home/oracle目录

16.进入数据库,创建impdp路径:create directory expdir as ‘/home/oracle’;

17.授予system用户读写该路径权限:grant read,write on directory expdir to system;

18.执行impdp操作:impdp system/*****directory=expdir dumpfile=$exp.dmp full=y logfile=$imp.log

关于如何解决Oracle expdp/impdp数据迁移过程中字符集不一致的问题就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。