【问题标题】:NLS_TERRITORY in NLS_SESSION_PARAMETERS is not showing correct value after ORACLE 12C UpgradeORACLE 12C 升级后 NLS_SESSION_PARAMETERS 中的 NLS_TERRITORY 未显示正确的值
【发布时间】:2019-02-17 14:37:42
【问题描述】:

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

我看到 NLS_SESSION_PARAMETERS 中的 NLS_TERRITORY 值和 NLS_LANG 值在 ORACLE 12C 升级后没有显示正确的值。

它应该是 GERMANY 和 GERMAN,而不是 AMERICAN 和 AMERICA,因此某些查询没有显示正确的结果是货币条款。

因为参数“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 = 字符

【问题讨论】:

    标签: oracle session nls


    【解决方案1】:

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

    然后,当我重新启动数据库时,NLS 会话值会自行修复,因此我不必更改脚本中的某些内容,现在可以像使用以前的 Oracle 版本一样工作。

    【讨论】:

      猜你喜欢
      • 2018-02-12
      • 1970-01-01
      • 2019-11-17
      • 2016-05-10
      • 2019-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多