【问题标题】:Configure an Oracle DB to assume double byte character sets by default将 Oracle DB 配置为默认采用双字节字符集
【发布时间】:2023-03-25 07:32:03
【问题描述】:

我已经使用 AL32UTF8 设置了一个 Oracle 数据库。使用 SQLPlus 和 SQLDeveloper 等工具时,我可以将 DBCS 字符(中文、高 ascii 等)放入 DB。

但是,当我使用 Oracle Instant Client 的应用程序尝试将数据放入数据库时​​,DBCS 字符会变成 ?分数。我能够解决这个问题并通过执行以下操作使事情正常进行:在运行我的应用程序的机器(CentOS)上导出 NLS_LANG='.AL32UTF8'。数据库位于单独的机器上。通过上述修复,我需要在所有客户端上设置 NLS_LANG。

我希望能够做的(如果可能的话)是配置数据库,使其假定客户端默认使用 NLS_LANG = '.AL32UTF8',因此不必在所有客户端上设置 NLS_LANG。这可能吗?如果有,怎么做?

【问题讨论】:

    标签: c# sql oracle mono centos


    【解决方案1】:

    这个设置只属于客户端,如果客户端假设默认是一些拉丁语,你不能在其他地方覆盖它。 另一方面,您可以随时使用ALTER SESSION 在您的应用程序中设置 requiredNLS_LANG 选项。

    【讨论】:

      【解决方案2】:

      设置AFTER LOGON 触发器是数据库层积极控制 NLS 参数的唯一方法。通过客户端环境继承的设置将覆盖服务器环境中的设置。

      【讨论】:

        猜你喜欢
        • 2015-12-21
        • 1970-01-01
        • 2011-12-04
        • 2014-03-22
        • 1970-01-01
        • 2014-01-29
        • 2021-08-03
        • 2014-04-29
        • 1970-01-01
        相关资源
        最近更新 更多