情况:公司的测试服务器数据库不小心被开发人员给搞崩溃了,需要把数据库清空,将运行环境的数据库附加过来,但是当我将导出的dump文件导入的时候,却出现了乱码问题,后来经过多次试验。终于把问题给弄明白了。
数据库附加失败原因:
1、版本不一致,低版本的oracle无法附加高版本的oracle文件
2、oracle的字符集不一致,使用:select * from nls_database_parameters;查询就可以知道了
第一种情况相信不用说大家都知道怎么解决,后者的话解决方法如下:
执行完sql语句后,在查询结果中可以看到以下两项,如果这两项的跟导出的oracle环境下的不同,那么导入肯定会出现乱码。
NLS_CHARACTERSET是数据库字符集,NLS_NCHAR_CHARACTERSET是国家字符集
ORACLE中有两大类字符型数据,VARCHAR2是按照数据库字符集来存储数据。而NVARCHAR2是按照国家字符集存储数据的。同样,CHAR和NCHAR也一样,一是数据库字符符,一是国家字符集。
出现这种情况,修改字符集编码就可以了(ALTER DATABASE CHARACTER SET XXXXXX)