【问题标题】:Oracle 10g NLS ParametersOracle 10g NLS 参数
【发布时间】:2011-01-19 04:35:21
【问题描述】:

如果在数据库级别设置 Oracle 10g NLS 参数有任何问题,特别是我所在国家/地区的 NLS_TERRITORY 以及将时区设置为 UTC,请告诉我。

现在会不会有任何冲突,我们的 NLS_TERRITORY 设置为 AMERICA 不正确?

谢谢。

【问题讨论】:

    标签: internationalization oracle10g nls nls-lang


    【解决方案1】:

    对于 Oracle,您通常必须谨慎使用 NLS 参数。文档总是一个好主意: NLS / Globalization stuff

    请注意,NLS_TERRITORY 参数是从 NLS_LANG 派生的。因此,您应该能够通过更改 NLS_LANG 来影响 NLS_TERRITORY 参数。 (无论如何都应该同步。)

    看完之后(请务必阅读),您可能会想“嘿,我们有现有数据,更改参数后是否需要对其执行任何转换?”

    1. 进行备份!更改前 参数。
    2. 是的,您可能需要执行一些数据转换,具体取决于数据的存储方式以及您更改的区域。

    还请记住,任何使用此数据库的客户端软件都应将其 NLS_LANG(尤其是其中的字符集部分)设置为与数据库相同 - 否则数据可能被损坏。

    【讨论】:

    • 最后一段是一个非常糟糕的建议。 NLS_LANG 的字符集部分需要与应用程序在其中运行并将数据传递给 Oracle 客户端 (OCI) 的字符集相匹配。有许多因素会影响正确的选择,而对于某些应用,选择甚至可能无关紧要。
    【解决方案2】:

    “数据库级别的 NLS 参数,特别是 NLS_TERRITORY”是什么意思?

    如果您的意思是显示在 NLS_DATABASE_PARAMETERS 中的参数,那么一旦创建数据库就无法更改这些参数。但是,这些特定参数(NLS_[NCHAR]_CHARACTERSET 除外)仅用于 CHECK 约束和一些需要在数据库的整个生命周期中保持不变的其他表达式(例如 VPD)。因此,NLS_DATABASE_PARAMETERS 中的 NLS_TERRITORY 设置为什么并不重要。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-09
      • 2011-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-25
      • 2010-09-16
      相关资源
      最近更新 更多