Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm cách nào để kiểm tra NLS_LANG của máy khách?

Đây là những gì tôi làm khi khắc phục sự cố mã hóa. (Giá trị NLS_LANG được đọc bởi sqlplus):

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]" 

Bạn sẽ phải trích xuất giá trị NLS_LANG trong ORACLE_HOME hiện tại từ sổ đăng ký. Tất cả các công cụ phía máy khách (sqlplus, sqlldr, exp, imp, oci, v.v.) đọc giá trị này từ sổ đăng ký và xác định xem có xảy ra bất kỳ quá trình chuyển mã ký tự nào hay không.

ORACLE_HOME và phần đăng ký:

C:\>dir /s/b oracle.key
C:\Oracle10\BIN\oracle.key

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

Trong những lúc như thế này, tôi chuyển sang IPython để thể hiện một ý tưởng:

Một vài lần tra cứu và bạn đã ở đó!

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)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thêm tham số ngày vào truy vấn oracle

  2. 12c DBA_USERS Thay đổi

  3. Cách ánh xạ một chuỗi thành chuỗi DB trong Hibernate

  4. Giới thiệu về phương pháp thu thập PL / SQL trong cơ sở dữ liệu Oracle

  5. Hàm TO_DSINTERVAL () trong Oracle