配置Oracle DB默认采用双字节字符集

时间:2013-11-11 16:02:46

标签: c# sql oracle mono centos

我已经使用AL32UTF8设置了一个Oracle DB。我可以在使用SQLPlus和SQLDeveloper等工具时将DBCS字符(chinese,high-ascii等)放入DB中。

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

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

2 个答案:

答案 0 :(得分:1)

此设置仅属于客户端,如果客户端假定默认值为某些拉丁语,则无法在其他位置覆盖它。 另一方面,您始终可以ALTER SESSION在应用程序中设置所需的NLS_LANG选项。

答案 1 :(得分:1)

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