Oracle
 sql >> база данни >  >> RDS >> Oracle

Задаване на езикови параметри на Oracle за DG4ODBC

В отговор на запитвания на клиенти, този документ описва как да зададете HS_LANGUAGE и HS_NLS_NCHAR параметри при използване на DG4ODBC.

Ако използвате Unicode ODBC драйвер, като например ODBC драйвера на SQL Server, уверете се, че тези параметри и стойности присъстват във вашия DG4ODBC init файл:

HS_LANGUAGE = language_territory.code_page
HS_NLS_NCHAR = UCS2

Заменете език , територия и code_page с езика, територията и кодовата страница на Oracle®, които съответстват на езика, локала и кодовата страница на вашите бази данни.

Например, ако вашата база данни е SQL Server и нейният език и кодова страница са English (United States) и 1252 , вашият HS_LANGUAGE параметърът ще изглежда така:

HS_LANGUAGE = ENGLISH_AMERICA.WE8MSWIN1252

HS_NLS_NCHAR стойността на параметъра казва на DG4ODBC да предаде UCS-2 кодирани данни към API на Unicode ODBC, което е символът, кодиращ стандартните състояния на ODBC, които трябва да се използват и следователно е този, който мениджърът на драйвери unixODBC очаква.

Уверете се също, че сте задали NLS_LANG преди да стартирате приложението си Oracle®. NLS_LANG позволява на Oracle® да знае какъв набор от символи използва вашата клиентска машина. Например:

$ echo $LANG
en_US.UTF-8
$ NLS_LANG=AMERICAN_AMERICA.AL32UTF8 ./sqlplus

Ако използвате ANSI ODBC драйвер (който не поддържа широки извиквания на ODBC API), трябва да посочите набор от знаци, различен от UTF-8 в HS_LANGUAGE стойност. Например, HS_LANGUAGE = AMERICAN_AMERICA.WE8ISO8859P1 . Ако не направите това и NLS_CHARACTERSET на вашата база данни Oracle® стойността е зададена на UTF-8 кодиране, например AL32UTF8 , DG4ODBC:

  • Използва Unicode ODBC API, например SQLDriverConnectW , които мениджърът на драйвери unixODBC съпоставя с техния ANSI еквивалент (или ако вашият HS_FDS_SHAREABLE_NAME параметър сочи към споделения обект на ODBC драйвер, причинява неуспех на връзката с грешка "недефиниран символ").
  • Предава кодирани в UTF-8 данни към ODBC API, които мениджърът на драйвери unixODBC не поддържа. Връзката е неуспешна, защото DG4ODBC предава кодиран с UTF-8 низ за връзка към SQLDriverConnectW , с което мениджърът на драйвери unixODBC не може да се справи.

Unicode ODBC драйвери

Unicode ODBC драйверите поддържат широките ODBC API, които са от формата SQLxxxW. За да проверите дали вашият ODBC драйвер поддържа широки ODBC API, или се консултирайте с вашия доставчик на драйвери, или активирайте регистрирането на ODBC драйвери, свържете се с DG4ODBC и прегледайте получения регистрационен файл. Например:

$ more /etc/odbc.ini
[SQLSERVER_SAMPLE]
.
.
.
Logging=Yes
LogFile=/tmp/mssql.log

$ ./sqlplus / as sysdba
$ select * from mytable@mssqllink;
$ exit
$ more /tmp/mssql.log
.
.
.
ENTRY:   SQLGetInfoW: connection_handle...

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Увеличете дисковата група VOTE в ASM за надстройка на GI 12.2

  2. ORA-28040:Няма съвпадащо изключение за протокол за удостоверяване

  3. Как да мигрираме база данни на Oracle от AWS EC2 към AWS RDS

  4. Как се съхраняват датите в Oracle?

  5. Oracle PL/SQL групово събиране с пример за изключения за запазване