2009-10-29 7 views
9

से कनेक्ट करने के लिए सही जेडीबीसी यूआरएल क्या है हम एक सरल (कस्टम) जेडीबीसी कनेक्टर वर्ग के साथ हमारे कोड से ओरेकल से जुड़ रहे हैं। यह वर्ग संसाधन फ़ाइल से कनेक्शन गुण पढ़ता है और ओरेकल (पतला कनेक्शन) से कनेक्शन बनाने का प्रयास करता है।एक आरएसी डेटाबेस

हालांकि, हाल ही में डेटाबेस एक आरएसी में स्थानांतरित हो गया है और अब एप्लिकेशन डीबी से कनेक्ट करने में असमर्थ है।

यहाँ TNSping उत्पादन होता है:

Used LDAP adapter to resolve the alias 
Attempting to contact (DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE=OFF)(FAILOVER=ON) 
(ADDRESS=(PROTOCOL=TCP)(HOST=tst-db1.myco.com)(PORT=1604)) 
(ADDRESS=(PROTOCOL=TCP)(HOST=tst-db2.myco.com)(PORT=1604)))(CONNECT_DATA=  
SERVICE_NAME=mydb1.myco.com)(SERVER=DEDICATED))) 
OK (80 msec) 

क्या इस मामले में निर्दिष्ट करने के लिए सही URL हो सकता है?

उत्तर

16

URL ऐसा दिखाई देना चाहिए:

jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE=OFF)(FAILOVER=ON) 
(ADDRESS=(PROTOCOL=TCP)(HOST=tst-db1.myco.com)(PORT=1604)) 
(ADDRESS=(PROTOCOL=TCP)(HOST=tst-db2.myco.com)(PORT=1604))) 
(CONNECT_DATA=(SERVICE_NAME=mydb1.myco.com)(SERVER=DEDICATED))) 

वास्तव में, बस अपने tnsnames.ora से tnsentries कॉपी।

+0

वह। है। बहुत बढ़िया। मुझे नहीं पता था कि आप सीधे 'tnsnames.ora' से कॉपी कर सकते हैं। मैं बस पहले कुछ जेडीबीसी कनेक्शन स्ट्रिंग नरक के माध्यम से waded। आपकी पोस्ट वास्तव में मदद की। – kevinarpe

1

आप ओसीआई ड्राइवरों को देखना चाहते हैं। मेरा मानना ​​है कि उन्हें बेहतर प्रदर्शन करना होगा और आरएसी को बेहतर तरीके से संभालना होगा।

से http://download.oracle.com/docs/cd/B10500_01/appdev.920/a96590/adg01dev.htm#429762

ओसीआई एक Oracle डाटाबेस को ऐक्सेस की अन्य विधियों का महत्वपूर्ण लाभ प्रदान करता है:

आवेदन डिजाइन के सभी पहलुओं पर
  • अधिक कुशल नियंत्रण।
  • प्रोग्राम निष्पादन पर नियंत्रण की उच्च डिग्री।
  • परिचित 3 जीएल प्रोग्रामिंग तकनीकों और अनुप्रयोग विकास उपकरण जैसे ब्राउज़र और डिबगर्स का उपयोग करें।
  • गतिशील एसक्यूएल, विधि 4 का समर्थन 4.
  • सभी ओरेकल प्रोग्रामेटिक इंटरफेस के प्लेटफार्मों की सबसे विस्तृत श्रृंखला पर उपलब्धता।
  • डायनामिक बाइंड और कॉलबैक का उपयोग करके परिभाषित करें।
  • सर्वर मेटाडेटा की परतों का पर्दाफाश करने के लिए कार्यक्षमता का वर्णन करें।
  • पंजीकृत क्लाइंट अनुप्रयोगों के लिए असीमित घटना अधिसूचना।
  • सरणी INSERT, UPDATEs, और DELETEs के लिए उन्नत सर डेटा मैनिपुलेशन भाषा (डीएमएल) क्षमता।
  • राउंड-ट्रिप को कम करने के लिए निष्पादन के साथ एक प्रतिबद्ध अनुरोध को जोड़ने की क्षमता।
  • राउंड-ट्रिप को कम करने के लिए पारदर्शी प्रीफेच बफर का उपयोग करके क्वेरी के लिए अनुकूलन।
  • थ्रेड सुरक्षा इसलिए आपको ओसीआई हैंडल पर पारस्परिक अनन्य ताले (म्यूटेक्स) का उपयोग करने की आवश्यकता नहीं है।
  • गैर-ब्लॉकिंग मोड में सर्वर कनेक्शन का मतलब है कि जब कॉल अभी भी निष्पादित हो या पूरा नहीं हो पाता है तो नियंत्रण ओसीआई कोड पर वापस आ जाता है।
+0

सहमत - लेकिन एंटरप्राइज़ नीति (श्वास) अपने 'मोटी' समकक्षों पर पतले ग्राहकों का उपयोग करने की सिफारिश करती है। – Vini

+1

वाह ... यह सिर्फ अज्ञानी है। –

2

एक tnsnames फ़ाइल, पुराने ओरेकल नाम सर्वर, और नए, की सिफारिश की LDAP निर्देशिका सर्वर डेटाबेस नामों को हल करने की विधि के बिंदु में होस्ट नामों, पते, बंदरगाहों, आदि हार्डकोड करने से बचने के लिए है अपने संबंध तार। डीबीए डेटाबेस को किसी नए होस्ट या बंदरगाह को तोड़ने के बिना स्थानांतरित करने में सक्षम होना चाहिए।,

jdbc:oracle:thin:@ldap://<OID server name>:<OID port>/<DB SID or Service Name>,cn=OracleContext,dc=<yourdomain>

अपने मामले में

तो अगर "OID" आपकी कंपनी में OID सर्वर DNS-समाधान योग्य नाम थे:

अपने पतली कनेक्ट यूआरएल सेट करने के लिए सबसे अच्छा तरीका है निम्न सिंटैक्स के साथ है , और यह बंदरगाह 5000 का इस्तेमाल किया है, यह होगा:

jdbc:oracle:thin:@ldap://oid:5000/mydb1,cn=OracleContext,dc=myco,dc=com

अपने DBAs अभी तक OID सेट नहीं किया है, तो वे बुरी तरह पीछे हैं। नए डीबीए प्राप्त करने का समय

-squish

0
भी

आप अपने नोड्स आईपी के बजाय ओरेकल 11g r2 में आईपी स्कैन का उपयोग कर सकते हैं:

testi=(DESCRIPTION = 
(ADDRESS_LIST= 
(ADDRESS= (PROTOCOL = TCP)(HOST = scan-ip-or-name)(PORT = 1521)) 
(FAILOVER = on) 
(LOAD_BALANCE = on) 
) 
(CONNECT_DATA= 
(SERVICE_NAME = testi) 
)) 
0

मुझे यकीन है कि नहीं कर रहा हूँ अगर आप अपनी समस्या को हल है, लेकिन मैं एक ही समस्या का सामना करना पड़ा और इस समाधान मेरे लिए काम करता है:

jdbc:oracle:oci:@(DESCRIPTION=(FAILOVER=on)(ADDRESS=(PROTOCOL=TCP)(HOST=**mi.host**)(PORT=**1521**))(LOAD_BALANCE=yes)(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=**serviceName**))) 
+0

धन्यवाद फ्रांसिस्को। मुझे समाधान मिला (स्वीकृत उत्तर देखें)। वैसे भी, आप हाथ उधार देने के लिए समय लेने की सराहना करते हैं। – Vini

0

इस मैं क्या प्रयोग किया जाता है:

jdbc:oracle:thin:@ldap://xxx:389/yyy,cn=OracleContext,dc=zzz,dc=com 
ldap://xxx:389/yyy,cn=OracleContext,dc=zzz,dc=com 
ldap://xxx:389/yyy,cn=OracleContext,dc=zzz,dc=com 
संबंधित मुद्दे