ORACLE 12C升级后,NLS_SESSION_PARAMETERS中的NLS_TERRITORY没有显示正确的值

时间:2018-09-12 21:43:11

标签: oracle session nls

我们最近将测试环境数据库从11.2.0.3。升级到了12.2.0.1。

在Oracle 12C升级后,我发现NLS_SESSION_PARAMETERS中的NLS_TERRITORY值和NLS_LANG值未显示正确的值。

应该是德国和德国,而应该是美国和美国,因此某些查询没有显示正确的结果是货币条款。

参数“ NLS_NUMERIC_CHARACTERS”取决于NLS_TERRITORY值。

我看到NLS_DATABASE_PARAMETERS和NLS_INSTANCE_PARAMETERS,但是NLS_SESSION_PARAMETERS是错误的,因此它会影响我们一些显示数字的脚本。

我不想通过ALTER SESSION对其进行更改,并希望使用带有处理数字的参数的SQL语法执行SQL或硬编码。

请告知我是否有任何解决方案,以便可以更改NLS_SESSION_PARAMETER。

由于ORACLE DB正在读取PFILE,因此我为NLS参数设置了以下值:- NLS_LANGUAGE =德语 NLS_TERRITORY =德国 nls_length_semantics = char

1 个答案:

答案 0 :(得分:0)

我自己找到了解决方案,它是一个愚蠢的环境配置,并且以某种方式从另一个配置文件读取错误的条目,该配置文件由环境NLS_LANG的实际配置文件指出。 它已导出NLS_LANG = AMERICAN_AMERICA.WE8ISO8859P15 因此,每当数据库启动时,都会从该NLS_LANG环境变量中为NLS会话加载错误的NLS_LANG和NLS_TERRITORY值。 我删除了该错误的配置文件条目,并使用NLS_LANG如下: 在实际配置文件中导出NLS_LANG = GERMAN_GERMANY.WE8ISO8859P15,以便数据库获取正确的信息。

然后,当我重新启动数据库时,NLS会话值本身就被固定了,因此我不必在脚本中进行任何更改,并且现在可以像使用以前的Oracle版本一样使用它们。