关于plsql导入pde因为字符集设置问题报错,而研究oracle服务器字符集、客户端字符集过程中发现的问题看,以及亲测的解决办法
关于plsql导入pde因为字符集设置问题报错,而研究oracle服务器字符集、客户端字符集过程中发现的问题看,以及亲测的解决办法。
---
背景交代:
plsql版本:11.0.5.1175 01.601769-Unlimited user license
oracle客户端版本:oracle client 11gr2
oracle服务器端版本:oracle 11g
通过select userenv('language') from dual查出服务器端的字符集是:
通过select * from nls_database_parameters查出服务器端的字符集是:
数据库服务器端有一个实例orcl,有一个用户test1/test1,内有数据20M。同一实例下有一个用户test2/test2,内容为空,什么都没有。拟将test1中的内容导出pde恢复到test2中供测试使用。
--背景交代完毕
下面是测试情况:
情况1:
客户端设置字符集为 SIMPLIFIED CHINESE_CHINA.AL32UTF8,使用plsql导出test1用户的pde命名为test1.pde,没问题,正常导出,没有报错。使用同一plsql和oracle客户端,导入test1.pde到test2用户下报错。
情况2:客户端设置字符集为
SIMPLIFIED CHINESE_CHINA.ZHS16GBK,使用plsql导出test1用户的pde命名为test1.pde,没问题,正常导出,没有报错。使用同一plsql和oracle客户端,导入test1.pde到test2用户下正常,没有报错。
这就奇怪了:
客户端字符集和服务器端字符集设置为一致,导出失败;
客户端字符集和服务器端字符集设置为不一致,却导入成功了。
什么原因呢?