使用imp导数据出现xmltype字段的内容的中文是乱码

      使用imp导数据出现xmltype字段的内容的中文是乱码,这个问题困扰了我应该有半年的时间了。

      症状:从广州以外的数据库导出来的dmp文件,导到广州本地的数据库时,一般字段不会出现中文乱码,而xmltype中的中文全是问号,而广州本地的数据库之间的导入导出,却不存在乱码。

       具体的:1、从本地导出dmp文件,导入杭州数据库,xmltype字段的出现乱码。

                    2、从杭州导出dmp文件,导入本地数据库,xmltype字段的出现乱码。

                    3、从本地导出dmp文件,导入珠海数据库,xmltype显示正常。

                    4、从珠海导出dmp文件,导入本地数据库,xmltype字段出现乱码。

     

       环境:linux、oracle 10g ,其中本地的是rehat5.4,杭州的也是rehat5.4,珠海的是suse。

      

    今天无意中,被我查到了原因,是系统环境变量NLS_LANG的问题,本地的系统是没有设置这个值,杭州的也没有设置这个值,珠海的由于有密码,暂时没查到。

      查看NLS_LANG:echo $NLS_LANG

      设置NLS_LANG:export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

      这里要注意,这个环境变量是分用户的, 需要在oracle用户下设置,在root用户下设置时无效的。而且export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 这个命名在当前窗口才有效,如果切换了用户或者退出后再登陆,会失效的。

     在导入dmp文件时,在oracle用户下设置NLS_LANG,然后在使用imp命令导入数据,这样就不会出现乱码了。

 

值得怀疑的地方:本地之间的导入导出没问题,这个是否跟系统的版本有关系呢?因为总结上面的几种情况,都是不同系统间的dmp导入导出时出现乱码。

       

你可能感兴趣的:(oracle,linux,SuSE)