最近在做一个项目,一些模块基本完成,准备搭建一个“正式测试”库,把做好的功能先让试用一下。因为没有多少数据,所以就用exp/imp导入了,导出导入都很正常,没有任何报错。
这么快就弄好了,先用应用程序连上去试试吧。。。结果。。。悲剧了。很多个包体都处于不可用状态,手动去编译一下,就报错:ORA-12714: invalid national character set specified。于是就直接从本地库复制一个包的脚本执行一下,还是报这个错。怎么会报这个错,“指定的国家字符集无效”?怎么会,本地都是好好的呀。
出了错误,只能分析一下了,双击了错误,发现是包中一个分页查询的存储过程有问题。最后定位到,这个查询是查询一个嵌套表。就觉得更奇怪了,嵌套表用了很长时间了,一直没遇到过这个问题。后来经过检查发现,报错的都是嵌套表中定义为nvarchar2的字段,于是单独测试了一下,果然是用varchar2就没有问题,用nvarchar2就问题。但本地也用的是nvarchar2类型呀,怎么不报错?突然想到是不是版本不一样!检查了一下发现,本地两个库的版本分别是11.1和10.2.0.4。而“正式测试库”的版本是10.2.0.1,于是就升级一下版本,升级到10.2.0.4,再导入就OK了。
总结:到最后也没有找到原因,还是感觉挺奇怪了。但是通过升级的办法还是解决了,看样子应该是某种ORACLE的BUG了。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23065269/viewspace-714750/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/23065269/viewspace-714750/