Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana cara memeriksa NLS_LANG klien?

Inilah yang saya lakukan ketika saya memecahkan masalah penyandian. (Nilai NLS_LANG dibaca oleh 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]" 

Anda akan harus mengekstrak nilai NLS_LANG di ORACLE_HOME saat ini dari registri. Semua alat sisi klien (sqlplus, sqlldr, exp, imp, oci, dll...) membaca nilai ini dari registri dan menentukan apakah ada transcoding karakter yang harus dilakukan.

ORACLE_HOME dan bagian registri:

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

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

Di saat seperti ini, saya beralih ke IPython untuk mendemonstrasikan sebuah ide:

Beberapa pencarian dan Anda sampai di sana!

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. Apa yang harus dilakukan jika Anda tidak dapat membuka kesalahan file objek bersama saat menggunakan driver ODBC Oracle Easysoft versi OCI?

  2. Ketik subkueri ORM

  3. Fungsi DBTIMEZONE di Oracle

  4. KASUS .. KETIKA ekspresi di Oracle SQL

  5. Bagaimana Mengubah Struktur Tabel di Oracle?