Arch Linux是一款自由、轻量级、灵活的Linux发行版,其特点在于提供纯净的Linux内核以及简洁的软件包管理系统,因而备受程序员和高级用户的喜爱。然而,对于Oracle数据库用户而言,Arch Linux可能会存在一些问题,本文将着重探讨Arch Linux在使用Oracle数据库过程中负数相关的一些问题及解决方案。
在Oracle数据库中,数值为负数的情况时常出现,而在Arch Linux系统下,可能会出现以下两种情况:
$ sqlplus ... SQL>select -1 from dual; ... ERROR: ORA-31011: XML解析失败 ORA-19202: ORA-06512: "'SYS.DBMS_XSLPROCESSOR'", line 11 ORA-06512: "'SYS.DBMS_XMLGEN'", line 690 ORA-06512: line 1 ORA-31011: XML解析失败 ORA-19202: ORA-06512: "'SYS.DBMS_XSLPROCESSOR'", line 11 ORA-06512: "'SYS.DBMS_XMLGEN'", line 690 ORA-06512: line 1
$ sqlplus<< EOS set numwidth 10; col c format 9999999999D00; select -1 as c from dual; EOS C ----------- -1.00 但是当numwidth设置为小于8时,之前的脚本会产生: ERROR: ORA-01820: 字符串时间戳格式不正确
观察以上报错,可以发现这是因为Arch Linux系统默认使用的较新版本的glibc库与Oracle 9i时代的OCI库不兼容所致。解决的方法很简单,只需要在使用sqlplus执行命令的时候设置将NLS_LANG环境变量设置为“AMERICAN_AMERICA.AL32UTF8”即可。
$ export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 $ sqlplus ... SQL>select -1 from dual; ... -1
此时再执行出现过负数错误的SQL语句,即可正常输出-1的结果,且numwidth设定不会影响结果。
在使用Arch Linux时,对于这一特性的了解以及对应的解决方案的掌握十分重要。希望此文对您在使用Oracle数据库时能起到帮助作用。