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

前端之家收集整理的这篇文章主要介绍了oracle – 如何检查客户端的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:\Oracle10\BIN\oracle.key

C:\>type C:\Oracle10\BIN\oracle.key
SOFTWARE\ORACLE\KEY_OraClient10204_Home

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

几个查找,你就在那里!

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

In [37]: OHOMES_INSTALLED
Out[37]:
['C:\\Oracle10\\BIN\\oci.dll','C:\\oraclexe\\app\\oracle\\product\\11.2.0\\server\\bin\\oci.dll']

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

In [39]: ORACLE_HOME
Out[39]: 'C:\\Oracle10\\BIN'

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

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

In [42]: SECTION
Out[42]: 'SOFTWARE\\ORACLE\\KEY_OraClient10204_Home\n'

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)

猜你在找的Oracle相关文章