Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

DG4ODBC के लिए Oracle भाषा पैरामीटर सेट करना

ग्राहक प्रश्नों के उत्तर में, यह दस्तावेज़ वर्णन करता है कि HS_LANGUAGE . कैसे सेट किया जाए और HS_NLS_NCHAR DG4ODBC का उपयोग करते समय पैरामीटर।

यदि आप एक यूनिकोड ODBC ड्राइवर जैसे SQL सर्वर ODBC ड्राइवर का उपयोग कर रहे हैं, तो सुनिश्चित करें कि ये पैरामीटर और मान आपकी DG4ODBC init फ़ाइल में मौजूद हैं:

HS_LANGUAGE = language_territory.code_page
HS_NLS_NCHAR = UCS2

भाषा बदलें , क्षेत्र और code_page Oracle® भाषा, क्षेत्र और कोड पृष्ठ के साथ जो आपके डेटाबेस की भाषा, स्थान और कोड पृष्ठ के अनुरूप है।

उदाहरण के लिए, यदि आपका डेटाबेस SQL ​​सर्वर है, और इसकी भाषा और कोड पृष्ठ English (United States) हैं और 1252 , आपका HS_LANGUAGE पैरामीटर इस तरह दिखेगा:

HS_LANGUAGE = ENGLISH_AMERICA.WE8MSWIN1252

HS_NLS_NCHAR पैरामीटर मान DG4ODBC को यूनिकोड ODBC APIs को UCS-2 एन्कोडेड डेटा पास करने के लिए कहता है, जो कि ODBC मानक राज्यों को एन्कोडिंग करने वाला वर्ण है और इसलिए यूनिक्सोडबीसी ड्राइवर प्रबंधक की अपेक्षा की जाती है।

यह भी सुनिश्चित करें कि आपने NLS_LANG . सेट किया है अपना Oracle® एप्लिकेशन शुरू करने से पहले। NLS_LANG Oracle® को यह जानने देता है कि आपकी क्लाइंट मशीन किस वर्ण सेट का उपयोग कर रही है। उदाहरण के लिए:

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

यदि आप एक ANSI ODBC ड्राइवर का उपयोग कर रहे हैं (जो विस्तृत ODBC API कॉल का समर्थन नहीं करता है), तो आपको HS_LANGUAGE में एक गैर UTF-8 वर्ण सेट निर्दिष्ट करना होगा मूल्य। उदाहरण के लिए, HS_LANGUAGE = AMERICAN_AMERICA.WE8ISO8859P1 . यदि आप ऐसा नहीं करते हैं और आपके Oracle® डेटाबेस के NLS_CHARACTERSET मान UTF-8 एन्कोडिंग पर सेट है, उदाहरण के लिए AL32UTF8 , डीजी4ओडीबीसी:

  • यूनिकोड ODBC API का उपयोग करता है, उदाहरण के लिए, SQLDriverConnectW , जिसे यूनिक्सोडबीसी चालक प्रबंधक उनके एएनएसआई समकक्ष (या यदि आपका HS_FDS_SHAREABLE_NAME पर मैप करता है) पैरामीटर ओडीबीसी ड्राइवर साझा ऑब्जेक्ट को इंगित करता है, कनेक्शन को "अपरिभाषित प्रतीक" त्रुटि के साथ विफल होने का कारण बनता है)।
  • ओडीबीसी एपीआई को यूटीएफ -8 एन्कोडेड डेटा पास करता है, जो यूनिक्सोडबीसी चालक प्रबंधक का समर्थन नहीं करता है। कनेक्शन विफल हो जाता है क्योंकि DG4ODBC एक UTF-8 एन्कोडेड कनेक्शन स्ट्रिंग को SQLDriverConnectW पर भेजता है , जिसे यूनिक्सोडबीसी चालक प्रबंधक संभालने में असमर्थ है।

यूनिकोड ODBC ड्राइवर

यूनिकोड ओडीबीसी ड्राइवर विस्तृत ओडीबीसी एपीआई का समर्थन करते हैं, जो 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. [01000] [unixODBC] [चालक प्रबंधक] lib '/usr/local/easysoft/oracle/InstantClient112/lib/libsqora.so' नहीं खोल सकता:फ़ाइल नहीं मिली

  2. JSON_QUERY () Oracle में फ़ंक्शन

  3. Oracle SQL एस्केप कैरेक्टर ('&' के लिए)

  4. Oracle डेटाबेस में PL/SQL संग्रह विधियों का परिचय

  5. Oracle में RTRIM () फ़ंक्शन