Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak sprawdzić NLS_LANG klienta?

To właśnie robię, gdy rozwiązuję problemy z kodowaniem. (Wartość NLS_LANG odczytana przez 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ędziesz muszą wyodrębnić wartość NLS_LANG w bieżącym ORACLE_HOME z rejestru. Wszystkie narzędzia po stronie klienta (sqlplus, sqlldr, exp, imp, oci itp.) odczytują tę wartość z rejestru i określają, czy powinno nastąpić transkodowanie znaków.

ORACLE_HOME i sekcja rejestru:

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

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

W takich chwilach zwracam się do IPythona, aby zademonstrować pomysł:

Kilka wyszukiwań i gotowe!

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. Jak obsługiwać pojedynczy cytat w Oracle SQL

  2. Oracle Regexp do zastąpienia \n,\r i \t spacją

  3. Data Oracle — jak dodać lata do daty?

  4. Samozadowolenie prowadzi do:Ryzyko staje się rzeczywistością

  5. Jak wyświetlić błędy w sqlplus