加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

oracle – 如何检查客户端的NLS_LANG?

发布时间:2020-12-12 13:50:09 所属栏目:百科 来源:网络整理
导读:我正在使用Windows操作系统,我知道此设置存储在注册表中.问题是注册表路径从版本更改为版本,浏览虽然这一堆注册表项肯定不是一个好主意. 我可以使用SELECT USERENV(‘language’)FROM DUAL获取服务器的NLS_LANG. 我想将它与客户端设置进行比较,并在它们不匹
我正在使用Windows操作系统,我知道此设置存储在注册表中.问题是注册表路径从版本更改为版本,浏览虽然这一堆注册表项肯定不是一个好主意.

我可以使用SELECT USERENV(‘language’)FROM DUAL获取服务器的NLS_LANG.

我想将它与客户端设置进行比较,并在它们不匹配时显示警告,就像Pl / Sql Developer一样.

这是我在解决编码问题时所做的事情. (sqlplus读取的NLS_LANG值):
SQL>/* It's a hack. I don't know why it works. But it does!*/
SQL>@[%NLS_LANG%]
SP2-0310: unable to open file "[NORWEGIAN_NORWAY.WE8MSWIN1252]"

您必须从注册表中提取当前ORACLE_HOME中的NLS_LANG值.
所有客户端工具(sqlplus,sqlldr,exp,imp,oci等…)从注册表中读取此值
并确定是否应该进行任何字符转码.

ORACLE_HOME和注册表部分:

C:&;dir /s/b oracle.key
C:Oracle10BINoracle.key

C:&;type C:Oracle10BINoracle.key
SOFTWAREORACLEKEY_OraClient10204_Home

在这些时候,我转向IPython来展示一个想法:

几个查找,你就在那里!

In [36]: OHOMES_INSTALLED = !where oci.dll

In [37]: OHOMES_INSTALLED
Out[37]:
['C:Oracle10BINoci.dll','C:oraclexeapporacleproduct11.2.0serverbinoci.dll']

In [38]: ORACLE_HOME = os.path.dirname(OHOMES_INSTALLED[0])

In [39]: ORACLE_HOME
Out[39]: 'C:Oracle10BIN'

In [40]: f = open(os.path.join(ORACLE_HOME,"oracle.key"))

In [41]: SECTION = f.read()

In [42]: SECTION
Out[42]: 'SOFTWAREORACLEKEY_OraClient10204_Homen'

In [43]: from _winreg import *

In [44]: aReg = ConnectRegistry(None,HKEY_LOCAL_MACHINE)

In [46]: aKey = OpenKey(aReg,SECTION.strip())

In [47]: val = QueryValueEx(aKey,"NLS_LANG")

In [48]: print val
(u'NORWEGIAN_NORWAY.WE8MSWIN1252',1)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读