如何将 Oracle 语言环境配置为在开发和集成之间相同

How to configure Oralce locale to be the same between development and integration

问题:

我的 java job runs fine in my development environment, but when I deploy it on the integration server, I get a 问题。这让我觉得我的开发人员之间存在配置差异。环境。和集成服务器。

上下文:

我不是 java 或 spring 专家。这是一个 问题。

我调用 MY.PROCEDURE 段 PL/SQL 代码,它又调用 Oracle 视图。

Oracle 视图中的以下指令在我的开发中运行良好。环境,但在集成服务器上它导致了问题:

T1.DATE between '01.07.2015' and  '07.07.2020'

给个丑的

Caused by: java.sql.SQLDataException: ORA-01843: not a valid month
ORA-06512: at "MY.PROCEDURE", line 36

当我用 TO_DATE 指定日期格式时,它消失了。我知道这是一个很好的做法,显然应该是我们团队必须做的。无论如何,我想了解 Dev 和 Int 之间的这种配置差异。

帮助

知道我在部署这个东西时应该在哪里配置语言环境吗?

我希望我可以在本地设置本地(或日期格式),而无需修改 java 可交付成果。可能吗?

您的 NLS_DATE_FORMAT 似乎在您的环境中有所不同。 运行 每个环境中的以下内容:

select value
from   nls_session_parameters
where  parameter = 'NLS_DATE_FORMAT';

这就是为什么您应该始终指定格式而不是依赖隐式转换的原因。如有必要,您可以 运行 以下内容:

alter session set nls_data_format = 'mm.dd.yyyy';

或者应该是 'dd.mm.yyyy'。根据给定的信息无法确定。

开发和集成服务器之间的环境差异首先是 Swiss(FR) 设置 OS。并且...服务器是 Linux,默认为英文。

所以你开始知道我要去哪里了。

告诉Java你运行你对'fr'地区的看法:

我必须使用以下命令完成 java 命令行:

 -Duser.country=fr -Duser.language=fr

这是我找到灵感的地方:NLS_LANG setting for JDBC thin driver?(最赞的答案)。