2011-10-31 19 views
12

मैंने 64 बिट विंडोज 7 पर स्विच किया है और डेटाबेस से कनेक्शन का परीक्षण करने के लिए एक सरल वेब ऐप बनाया है। मैं वीएस 2010 - सादा एएसपीनेट वेब प्रोजेक्ट का उपयोग कर रहा हूं और मैं वीएस के भीतर से एप्लिकेशन चला रहा हूं।ओआरए -12154 निर्दिष्ट पहचान पहचानकर्ता को हल नहीं कर सका

मैं इस त्रुटि हो रही है:

मैं भी एक नमूना सांत्वना अनुप्रयोग है कि डेटाबेस के लिए कनेक्शन का परीक्षण करती है "ORA-12154 कनेक्ट पहचानकर्ता निर्दिष्ट हल नहीं कर सका", और यह ठीक काम करता है।

कुछ googling के बाद, मैंने पाया कि कई पदों को ऑनलाइन अनुमतियों के लिए प्रस्तुत किया गया है, इसलिए मैंने अपने सीएसपी/ओरेकल अनुमतियों को मेरे एएसपीनेट खाते, नेटवर्क सेवा, कंप्यूटर नाम के लिए पढ़ने/लिखने/निष्पादित करने के लिए सेट किया है। वह अभी भी इस मुद्दे को हल नहीं करेगा। मैंने जांच की है कि मेरा वेब ऐप मेरे डोमेन \ उपयोगकर्ता खाते के अंतर्गत चलता है और यह खाता है कि C: \ Oracle फ़ोल्डर को पढ़ने/लिखने/निष्पादित करने का अधिकार।

मैं भी फिर से स्थापित मेरी वी.एस. यकीन है कि यह सी में है बनाने के लिए: \ Program Files बल्कि सी से: \ Program Files (x86)

को क्यों मेरे वेब अनुप्रयोग कनेक्शन नहीं देखता कोई भी विचार स्ट्रिंग? (जबकि कंसोल ऐप करता है) सुनिश्चित नहीं है कि मैं और क्या कर सकता हूं।

उत्तर

14

मुझे लगता है कि आप अपनी उपलब्ध डेटाबेस सेवाओं को निर्दिष्ट करने के लिए tnsnames.ora फ़ाइल का उपयोग कर रहे हैं। यदि कनेक्शन कनेक्शन त्रुटियां आम तौर पर दो चीजों तक आती हैं।

  1. एप्लिकेशन कनेक्शन स्ट्रिंग में निर्दिष्ट TNS प्रविष्टि नहीं ढूंढ सकता है।

  2. टीएनएस प्रविष्टि मिली, लेकिन आईपी या होस्ट tnsnames.ora फ़ाइल में सही नहीं है।

नंबर 1 पर विस्तार करने के लिए (जो मुझे लगता है कि आपकी समस्या है)। जब आप ओरेकल को कुछ का उपयोग करके कनेक्ट करने के लिए कहते हैं:

sqlplus user/[email protected] 

सेवा tnsnames.ora फ़ाइल में परिभाषित की गई है। अगर मैं एक सेवा है कि मेरे tnsnames.ora में निर्धारित नहीं है के साथ कनेक्ट करने का प्रयास, मैं त्रुटि मिल पाने:

[sodonnel @ घर ~] $ sqlplus sodonnel/sodonnel कहीं @

SQL*Plus: Release 11.2.0.1.0 Production on Mon Oct 31 21:42:15 2011 

Copyright (c) 1982, 2009, Oracle. All rights reserved. 

ERROR: 
ORA-12154: TNS:could not resolve the connect identifier specified 

तो - मैं हाँ लगता है क्योंकि अपने कंसोल

  • कनेक्ट कर सकते हैं वहाँ सेवा के लिए फ़ाइल में एक प्रविष्टि है - मैं के रूप में भी लगता है कि हाँ

    1. वहाँ एक tnsnames.ora फ़ाइल है: आप कुछ बातों की जांच करने की जरूरत है कंसोल
    2. जोड़ता है
    3. क्या एप्लिकेशन tnsnames.ora ढूंढ सकता है?

    आपकी समस्या अच्छी तरह से संख्या 3 हो सकती है - क्या आप कंसोल चलाने के दौरान एप्लिकेशन को एक अलग उपयोगकर्ता के रूप में चलाते हैं?

    ओरेकल TNS_ADMIN पर्यावरण परिवर्तक में परिभाषित निर्देशिका में tnsnames.ora फ़ाइल की तलाश करता है - यदि आप अलग-अलग उपयोगकर्ताओं के रूप में चल रहे हैं, तो शायद TNS_ADMIN पर्यावरण चर सेट नहीं है, और इसलिए यह फ़ाइल नहीं मिल सकता है?

  • +2

    ध्यान दें कि यह tnsnames.ora नहीं है tns_names.ora – cagcowboy

    +0

    @cagcowboy - ठीक है, मैंने इसे सही किया है। यह सही नहीं लग रहा था क्योंकि मैं इसे टाइप कर रहा था, लेकिन यह मेरे साथ क्लिक नहीं किया कि यह गलत था। –

    +0

    स्टीफन, धन्यवाद। अंक 1 और 2 हां हैं। मेरा प्रारंभिक झटका यह था कि मेरा वेब ऐप कंसोल ऐप की तुलना में एक अलग उपयोगकर्ता के तहत चलता है, इसलिए मैंने जांच की और निश्चित रूप से पर्याप्त है, मेरा वेब ऐप DOMAIN \ USERNAME के ​​रूप में चलता है और मैंने इस खाते को ऑरैकल फ़ोल्डर निष्पादित/लिखने की अनुमति दी है .... Tnsnames.ora वहां है और सभी प्रविष्टियां सही हैं, लेकिन यह अभी भी वेब एप्लिकेशन से हल नहीं होती है। – sarsnake

    4

    इतने सारे मुद्दे हो सकते हैं लेकिन यदि आप ऑरैकल 10 जी का उपयोग कर रहे हैं, तो ऑरैकल 10 जी अनइंस्टॉल करें और रजिस्ट्री से मूल्य को हटा दें और ओरेकल 11 जी इंस्टॉल करें। लेकिन अगर आप ऑरैकल 11 जी का उपयोग कर रहे हैं, तो पहले जाएं और रजिस्ट्री पर जांच करें यदि यह सही घर पर इशारा कर रहा है। कभी-कभी एक से अधिक घर हो सकते हैं क्योंकि आप बार-बार एसक्यूएल डेवलपर स्थापित करते हैं। उस स्थिति में या तो आप अनावश्यक घर रजिस्ट्री मान को हटा सकते हैं या आप उन सभी घरों में tns और sql.net फ़ाइल जोड़ सकते हैं, जो समस्या को हल कर सकते हैं। मैंने इस तरह से मेरा हल किया।

    1

    कृपया मुझे दोहराने दो जो स्टीफन ने कहा था क्योंकि मैंने इसे पहली बार याद किया था। TNS_ADMIN पर्यावरण चर और ORACLE_HOMEC:\instantclient_11_ 2 और th tnsnames.ora फ़ाइल पर सेट है। this link पर उत्तर मिला।

    +0

    ओरेकल स्थापना के आधार पर यह अलग-अलग लोगों के लिए अलग होगा, (यदि वे तत्काल ग्राहक स्थापित करते हैं या नहीं, जो मैंने नहीं किया)। मेरे स्थान हैं: 'ORACLE_HOME' =' C: \ oracle \ product \ 11' और 'TNS_ADMIN' =' C: \ oracle \ product \ 11 \ network \ admin'। ये डिफ़ॉल्ट स्थान होंगे (हालांकि उस समय '11' जो भी नाम आप नामित/स्थापित कर रहे थे) हो सकता है। 'पथ' चर में भी' सी: \ ऑरैक \ उत्पाद \ 11 \ bin' शामिल होना है। – vapcguy

    0

    उपयोग प्रक्रिया मॉनीटर का उपयोग करें और नाम की खोज tnsnames.ora फ़ाइल के लिए लॉग नहीं मिली है।

    अपने पर्यावरण चर की जांच करें। यदि सभी ऑरैकल क्लाइंट को अनइंस्टॉल करने और पुनर्स्थापित करने से मान्य नहीं है।

    +0

    पर्यावरण चर बदलने के लिए आपको ओरेकल क्लाइंट को अनइंस्टॉल करने की आवश्यकता नहीं है, आपको बस उन्हें जांचने और आवश्यकतानुसार अपडेट करने की आवश्यकता है। कंप्यूटर पर राइट-क्लिक करें, गुण> उन्नत सिस्टम सेटिंग्स, पर्यावरण चर का चयन करें। जिनमें से एक को 'TNS_ADMIN' होना चाहिए और 'C: \ oracle \ product \ 11 \ network \ admin' को इंगित करें, जहां इसके अंदर कनेक्शन स्ट्रिंग के साथ' tnsnames.ora' फ़ाइल होना आवश्यक है - यही मुझे लगता है यह पोस्ट कहने की कोशिश कर रहा है। – vapcguy

    1

    यदि आप एलडीएपी का उपयोग कर रहे हैं, तो सुनिश्चित करें कि पर्यावरण चर "TNS_ADMIN" मौजूद है और "ldap.ora" फ़ाइल वाले फ़ोल्डर को इंगित करता है।

    यदि यह चर मौजूद नहीं है, तो इसे बनाएं और विजुअल स्टूडियो को पुनरारंभ करें।

    +0

    या सुनिश्चित करें कि पर्यावरण (सिस्टम) परिवर्तनीय बिंदु उस फ़ोल्डर में है जहां आपके पास 'tnsnames.ora'' sqlnet.ora' है –

    0

    उपयोग this link माइक्रोसॉफ्ट समर्थन

    .on मैं ओरेकल घर फ़ोल्डर पर IUSR_MachineName उपयोगकर्ता की इजाजत दे दी और मैं इस समस्या

    3

    मैं एक ही मुद्दा था हल करने में सक्षम था। मेरे मामले में मैं एक वेब सेवा का उपयोग कर रहा था जो किसी भी सीसीपीयू सेटिंग्स का उपयोग कर बनाया गया था। चूंकि डब्ल्यूसीएफ 32 बिट ओरेकल डेटा एक्सेस घटकों का उपयोग कर रहा था, इसलिए जब मैंने इसे कंसोल क्लाइंट से कॉल करने का प्रयास किया तो यह वही त्रुटि उठा रहा था। इसलिए जब मैंने x86 आधारित सेटिंग का उपयोग करके डब्ल्यूसीएफ सेवा संकलित की, तो क्लाइंट वेब सेवा से सफलतापूर्वक डेटा प्राप्त करने में सक्षम था।

    यदि आप "कोई भी CPU" के रूप में संकलित करते हैं और x64 प्लेटफ़ॉर्म पर चलते हैं, तो आप 32-बिट डीएलएस लोड नहीं कर पाएंगे (जो हमारे मामले में ओरेकल डेटा एक्सेस घटक थे), क्योंकि हमारा ऐप ' WOW64 में शुरू हुआ (विंडोज 64 पर विंडोज 32)। तो ओरेकल डेटा एक्सेस घटकों की 32 बिट निर्भरता की अनुमति देने के लिए मैंने x86 के प्लेटफार्म लक्ष्य के साथ वेब सेवा की गणना की और इसे मेरे लिए हल किया

    वैकल्पिक रूप से यदि आपके पास मशीन पर 64 बिट ओडीएसी ड्राइवर स्थापित हैं दूर जाने की समस्या।

    0

    यह त्रुटि (और ओआरए -6413: कनेक्शन खुला नहीं है) भी आवेदन निष्पादन योग्य पथ में ब्रांड्स और 10.2.0.1 या कम ऑरैकल क्लाइंट पुस्तकालयों में एक बग के कारण हो सकता है।

    आपको या तो अपनी ऑरैक क्लाइंट लाइब्रेरी को अपग्रेड करना चाहिए या निष्पादन योग्य पथ को बदलना चाहिए।

    अधिक जानकारी देखें:

    0

    मैं एक SSIS परियोजना के साथ दृश्य स्टूडियो 2013 में इस त्रुटि थी। मैंने परियोजना, गुण, डिबगिंग, Run64BitRuntime = false सेट किया और फिर SSIS पैकेज चला गया।हालांकि, जब मैंने सर्वर पर पैकेज को तैनात किया तो मुझे मान को सत्य पर सेट करना पड़ा (सर्वर 64 बिट विंडोज 2012/एसक्यूएल 2014 है)।

    मुझे लगता है कि इसके पीछे तर्क यह है कि विजुअल स्टूडियो 32 बिट एप्लिकेशन है।

    1

    एक समान समस्या थी, केवल मेरा वेब ऐप ठीक था और यह SQLPlus था जो मुझे कनेक्ट करने में समस्याएं दे रहा था, और ORA-12154 could not resolve the connect identifier specified त्रुटि। मेरे पास 11 जी और 12 ओरेकल क्लाइंट स्थापित थे। मेरे वातावरण चर सब मेरी 12 कहने पर बात करने के लिए स्थापित किए गए थे:

    • ORACLE_HOME = C:\oracle\product\12
    • PATH = C:\oracle\product\12\bin;....
    • TNS_ADMIN = C:\oracle\product\12\network\admin

    भी एक रजिस्ट्री HKLM\Software\Oracle\KEY_OraClient12Home1 पर आवश्यक प्रविष्टि नहीं है, पर्यावरण चर के समान पथ के साथ TNS_ADMIN की एक स्ट्रिंग प्रविष्टि।

    मेरे पास C:\oracle\product\11\network\admin और C:\oracle\product\12\network\admin दोनों पर tnsnames.ora है। जहां तक ​​मुझे पता है, मेरे वेब ऐप और 12 SQLPlus क्लाइंट दोनों का उपयोग मैं कर रहा था, सभी 12 संस्करण चर का उपयोग कर रहा था।

    मेरे समस्या निवारण चरणों:

    • बदलें सभी पर्यावरणीय चर ऊपर 12 से 11 करने के लिए।
    • 11g के sqlplus साथ कनेक्ट 11 से 12 को (काम किया!)
    • बदलें वापस ऊपर सभी पर्यावरणीय चर।
    • 12 के sqlplus साथ कनेक्ट फिर से (काम किया!)

    तो मैं सच में नहीं पता है कि वजह से 12 के sqlplus जोड़ने को रोकने के लिए, लेकिन रीसेट इस तरह की किसी के लिए काम कर सकते हैं, इसलिए सोचा कि मैं यह दस्तावेज़ चाहते हैं यहाँ।

    0

    यह एक पुरानी सवाल है, लेकिन Oracle की नवीनतम संस्थापक कोई सुधार कर रहे हैं, तो मैं हाल ही में अपने आप को इस दलदल में वापस, चारों ओर कई दिनों के लिए पाया ताड़ना ...

    मेरे परिदृश्य एसक्यूएल सर्वर 2016 RTM था। 32-बिट ओरेकल 12 सी ओपन क्लाइंट + ओडीएसी अंततः विजुअल स्टूडियो रिपोर्ट डिज़ाइनर और इंटीग्रेशन सर्विसेज डिजाइनर के लिए ठीक काम कर रहा था, और एसएसआईएस पैकेज एसक्यूएल सर्वर एजेंट (32-बिट विकल्प के साथ) के माध्यम से चलाया गया। 64-बिट डेटा स्रोत को परिभाषित और परीक्षण करते समय रिपोर्ट पोर्टल के लिए ठीक काम कर रहा था, लेकिन रिपोर्ट चलाने से हमेशा डरावनी "ओआरए -12154" त्रुटि मिली।

    मेरा अंतिम समाधान एक EZCONNECT कनेक्शन स्ट्रिंग पर स्विच करना था - यह TNSNAMES गड़बड़ी को पूरी तरह से टालता है। यहाँ एक विस्तृत वर्णन के लिए एक लिंक है, लेकिन यह मूल रूप से सिर्फ है: मेरे Oracle स्थापित कर रहे हैं यह भविष्य में किसी को भी मदद करता है (या मैं फिर से इस पर अटक जाते हैं) मामले में

    http://www.oracledistilled.com/oracle-database/oracle-net/using-easy-connect-ezconnect-naming-method-to-connect-to-oracle-databases/

    बंदरगाह/sid, यहाँ: मेजबान कदम (पूर्ण डरावनी):

    ओरेकल ड्राइवर स्थापित करें: ओरेकल क्लाइंट 12 सी (32-बिट) प्लस ओडीएसी।

    ए। http://www.oracle.com/technetwork/database/enterprise-edition/downloads/database12c-win64-download-2297732.html और http://www.oracle.com/technetwork/database/windows/downloads/utilsoft-087491.html से निम्न फ़ाइलों को डाउनलोड और अनजिप करें):

    i। winnt_12102_client32.zip

    ii। ODAC112040Xcopy_32bit.zip

    बी। Winnt_12102_client32 \ client32 \ setup.exe चलाएं। स्थापना प्रकार के लिए, व्यवस्थापक का चयन करें। स्थापना स्थान के लिए C: \ Oracle \ Oracle12 दर्ज करें। अन्य डिफ़ॉल्ट स्वीकार करें।

    सी। एक कमांड प्रॉम्प्ट "व्यवस्थापक के रूप में" प्रारंभ करें और निर्देशिका (सीडी) को अपने ODAC112040Xcopy_32bit फ़ोल्डर में बदलें।

    डी। कमांड दर्ज करें: install.bat सभी सी: \ Oracle \ Oracle12 odac

    ई। Tnsnames.ora फ़ाइल को किसी अन्य मशीन से इन फ़ोल्डर्स में कॉपी करें: *

    i। सी: \ ओरेकल \ ओरेकल 12 \ नेटवर्क \ व्यवस्थापक *

    ii। C: \ ओरेकल \ Oracle12 \ उत्पाद \ 12.1.0 \ client_1 \ नेटवर्क \ व्यवस्थापक *

    स्थापित Oracle ग्राहक 12C (64) के साथ साथ ODAC

    एक। http://www.oracle.com/technetwork/database/enterprise-edition/downloads/database12c-win64-download-2297732.html और http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html से निम्न फ़ाइलों को डाउनलोड और अनजिप करें):

    i। winx64_12102_client.zip

    ii। ODAC121024Xcopy_x64.zip

    बी। Winx64_12102_client \ client \ setup.exe चलाएं। स्थापना प्रकार के लिए, व्यवस्थापक का चयन करें। स्थापना स्थान के लिए C: \ Oracle \ Oracle12_x64 दर्ज करें। अन्य डिफ़ॉल्ट स्वीकार करें।

    सी। "व्यवस्थापक के रूप में" कमांड प्रॉम्प्ट प्रारंभ करें और सी: \ सॉफ्टवेयर \ ओरेकल क्लाइंट \ ODAC121024Xcopy_x64 फ़ोल्डर में निर्देशिका (सीडी) बदलें।

    डी। कमांड दर्ज करें: install.bat सभी सी: \ Oracle \ Oracle12_x64 odac

    ई। Tnsnames.ora फ़ाइल को किसी अन्य मशीन से इन फ़ोल्डर्स में कॉपी करें: *

    i। सी: \ Oracle \ Oracle12_x64 \ network \ admin *

    ii। सी: \ Oracle \ Oracle12_x64 \ product \ 12.1.0 \ client_1 \ network \ admin *

    * यदि आप EZCONNECT विधि के साथ जा रहे हैं, तो इन चरणों की आवश्यकता नहीं है।

    ओडीएसी इंस्टॉल मुश्किल और अस्पष्ट हैं - दान अंग्रेजी के लिए धन्यवाद जिन्होंने मुझे इसके लिए विधि (ऊपर विस्तृत) दिया।

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

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