2009-07-03 33 views
5

मैं चींटी एसक्यूएल कार्य करने के लिए कुछ इसी तरह रहा हूँ लेकिन यह है कि प्रारूप का एक JDBC यूआरएल को स्वीकार करेंगे:मैं tnsname का उपयोग कर चींटी से ओरेकल डेटाबेस से कैसे कनेक्ट कर सकता हूं?

jdbc:oracle:thin:@TNS_NAME

एक संभव दृष्टिकोण अपने ही चींटी कार्य बनाने के लिए एक OracleDataSource का उपयोग करता है लिखने के लिए हो रहा है कनेक्शन, लेकिन क्या यह सीधे चींटी में ऐसा करने का कोई तरीका है?

संपादित करें: अब तक प्रतिक्रियाओं के लिए धन्यवाद। मुझे उम्मीद है कि अगर मैं जो त्रुटि प्राप्त कर रहा हूं उस पर थोड़ा और विस्तार करता हूं तो इससे मदद मिलती है।

<target name="MyTarget" > 
    <property name="oracle.net.tns_admin" value="/opt/oracle/product/10.2.0.1/NETWORK/ADMIN" /> 
    <property name="jdbc.driver" value="ojdbc5.jar" /> 
    <property name="jdbc.i18n.support" value="orai18n.jar" /> 
    <property name="jdbc.driver.class" value="oracle.jdbc.OracleDriver" /> 
    <path id="sql.class.path"> 
     <pathelement location="${jdbc.driver}" /> 
     <pathelement location="${jdbc.i18n.support}" /> 
    </path> 

    <sql driver="${jdbc.driver.class}" url="jdbc:oracle:thin:@THE_TNS_NAME" userid="USER" password="PASSWORD" classpathref="sql.class.path" > 
     <![CDATA[ 
     #SOME ARBITRARY SQL HERE 
     ]]> 
    </sql> 
</target> 

इस त्रुटि के साथ विफल:

java.sql.SQLException: Io exception: Unknown host specified

साथ यूआरएल की जगह "JDBC: ओरेकल: पतली: @HOST: पोर्ट: उदाहरण के" काम करता है

मेरे चींटी कार्य इस प्रकार है लग रहा है ठीक है, और मैं ऊपर इस्तेमाल किए गए टीएनएस नाम को भी tnsping कर सकते हैं, तो मुझे पता है कि यह मान्य है।

+0

यह सामान्य चींटी एसक्यूएल कार्य के साथ काम करना चाहिए, है ना? क्या इस तरह इसका उपयोग करने में कोई समस्या है? – Stobor

+0

यह सही होगा अगर यह अभी काम करता है, लेकिन मुझे कुछ गलत करना होगा। मैंने अपनी चींटी लिपि के साथ सवाल अपडेट किया है - क्या कोई गलती है? – zakvdm

+0

क्या आप ओरेकल या MySQL से कनेक्शन हैं? –

उत्तर

6

अभी इस के साथ काम कर रहा था और गायब टुकड़े पर ठोकर खाई थी। Oracle thin JDBC to TNS name

To establish an Oracle thin JDBC connection to a TNS alias (tnsname), make sure you pass the oracle.net.tns_admin system property to the JVM. Its value should be the directory in which your tnsnames.ora file is located. After that, you can just pass the TNS alias in place of the host name in the JDBC URL.

E.g. if you simply try to connect to jdbc:oracle:thin:@MYDB, which is in your tnsnames.ora file, you’ll get an SQLException with a detail message of Io exception: Unknown host specified. If you fire up the JVM with a -Doracle.net.tns_admin=/oracle/10g/NETWORK/ADMIN, or use System.setProperty(String,String) after startup, the connection will be established successfully.

इस मैं सफलतापूर्वक अकेले टीएनएस उपनाम का उपयोग कनेक्ट कर सकता था करने के बाद: टीएनएस स्थान के रूप में यहां सूचित एक प्रणाली संपत्ति के रूप में स्थापित किया जाना चाहिए।

+0

आपके उत्तर के लिए धन्यवाद! यह बहुत लंबा रहा है क्योंकि मुझे यह समस्या थी कि मैं विवरण को याद नहीं कर सकता, लेकिन आपका जवाब बहुत ही आशाजनक लगता है, :) – zakvdm

0

तुम्हारा मतलब है कि आप एक "मोटी" कनेक्शन tnsnames.ora और नहीं पतली ड्राइवर का उपयोग करता है चाहते हैं, तो आप xml फ़ाइल में sqlplus के लिए एक कॉल लपेट कर सकते हैं:

<target name="myTarget"> 
    <!-- login.sql should have sqlcode exit so failonerror will fail build --> 
    <exec executable="sqlplus" failonerror="true"> 
     <arg value="${userid}/${password}@${tnsalias}"/> 
     <arg value="@myScript"/> 
    </exec> 
</target> 

... है मूल विचार।

[जहां userid, पासवर्ड और tnsalias अपने गुण में परिभाषित कर रहे हैं फ़ाइल]

यह स्पष्ट रूप से मतलब है कि आप कम से कम त्वरित ग्राहक ढेर स्थापित करना होगा।

0

जब से हम अब अभी तक, क्या सटीक समस्या है, मैं केवल यह मान सकते हैं नहीं है कि यह मदद कर सकता है:

http://theblasfrompas.blogspot.com/2008/04/jdbc-thin-connection-using-tnsnamesora.html

+0

यह लिंक अतीत में मेरे लिए बहुत उपयोगी रहा है, लेकिन इस विशेष मामले में मैं चींटी के भीतर से जुड़ने की कोशिश कर रहा हूं। क्या मुझे अभी भी oracle.net.tns_admin सिस्टम प्रॉपर्टी निर्दिष्ट करने की आवश्यकता है? यदि हां, तो मैं यह कैसे करूँगा? मैंने अपना प्रश्न उस तरीके से अपडेट किया है जिस तरह से मैं इसका उपयोग कर रहा हूं। सहायता के लिए धन्यवाद। – zakvdm

+0

मुझे ऐसा लगता है। आप इसे इस तरह करते हैं: जिसे मैंने यहां से कॉपी किया है: http: // ideoplex।कॉम/आईडी/372/सेटिंग-जावा-सिस्टम-गुण-एंटी –

0

आप यकीन है कि यह नेटवर्क/व्यवस्थापक है कर रहे हैं और नेटवर्क/व्यवस्थापक नहीं?

यूनिक्स फाइल सिस्टम आमतौर पर केस संवेदनशील होते हैं - (मानते हैं कि यह यूनिक्स पर है)।

+0

आप बिल्कुल सही हैं, यह वास्तव में "नेटवर्क/व्यवस्थापक" है। हालांकि, मैंने दोनों की कोशिश की है और इससे कोई फर्क नहीं पड़ता। मैं सोच रहा हूं कि एसक्यूएल कार्य में संपत्ति पारित करने का कोई बेहतर तरीका नहीं है (जब मैं जावा लक्ष्य कहता हूं, तो मैं 'sysproperty' का उपयोग करता हूं, लेकिन एसक्यूएल कार्य इस का समर्थन नहीं करता है ...) । – zakvdm

संबंधित मुद्दे

 संबंधित मुद्दे