我们创建了“登录后”触发器来更改会话以设置两个NLS设置-NLS_SORT和NLS_COMP。需要将NLS_SORT设置为BINARY_CI,并且需要将NLS_COMP设置为LINGUISTIC。在建立连接以验证值之后,通过查询V $ NLS_PARAMETERS视图,我发现NLS_COMP参数得到更新,但NLS_SORT没有。OCI JDBC驱动程序和NLS设置
研究更后,我意识到,在建立连接
ALTER SESSION SET NLS_LANGUAGE='AMERICAN' NLS_TERRITORY='AMERICA'
后由于NLS_SORT派生自NLS_LANGUAGE,NLS_SORT参数值重置其值BINARY,而不是BINARY_CI的OCI JDBC驱动程序执行下面的查询。 NLS_LANGUAGE设置取自Windows注册表。
oci jdbc驱动程序是否执行这些查询以将客户端上的NLS设置与数据库服务器上的设置同步?
可以配置jdbc oci驱动程序以避免执行alter session set NLS_LANGUAGE查询吗?
我之所以问的第二个问题是,它没有任何意义的应用服务器(如GlassFish中,Tomcat的,JBoss的)机(其上安装OCI客户端)设置覆盖数据库服务器设置。
是的。有一个oracle提升请求,用于解决OCI驱动程序的问题。修复之后,语言和领土设置将在连接时传递给服务器,而不是在getConnection()调用之后传递它们,因为它现在完成了。此修复程序将在版本12中提供。因此,现在唯一的解决方案是执行alter session查询。 –
@AndyDufresne请提供提及的*增强请求以解决您提到的OCI驱动程序*的问题。 –
@Piotr Dobrogost - 您可以跟踪计划在12.1之前修复的id - 39670004。我现在不知道目前的状态。 –