मैंने पूर्ण ऑरैकल क्लाइंट 12.2.0 स्थापित किया है और मैं एसएसएमए के साथ ओरेकल से एसक्यूएल सर्वर में कुछ डीबी माइग्रेट करने की कोशिश कर रहा हूं, लेकिन जब मैं ऑरैकल से कनेक्ट करने का प्रयास करता हूं तो मुझे फोलोइंग त्रुटि मिलती है:

Unable to find specified provider.
Compatible Oracle Data Access Connectivity libraries were not found on the machine.

मैंने पहले से ही पर्यावरण के चर HOME_ORACLE को सेट कर दिया है और स्थापना के दौरान PATH डिफ़ॉल्ट रूप से सेट किया गया था, इसलिए मैं बाहर करता हूं कि समस्या है। मैंने ODAC के बारे में भी खोज की है, और सभी संकेत मुझे oracle istant प्रदाता पर याद दिलाते हैं, लेकिन चूंकि मैंने क्लाइंट को एक व्यवस्थापक स्थापना (पूर्ण) के साथ स्थापित किया है, मैंने सोचा कि स्थापना उन्हें भी कवर करेगी। किसी भी सुझाव?

संपादित करें: मैंने एक मानक मोड और tnsnames मोड के साथ लॉगिन करने का प्रयास किया, लेकिन परिणाम समान हैं

0
Serphentelm 3 जिंदा 2019, 13:18

1 उत्तर

सबसे बढ़िया उत्तर

ऐसा लगता है कि Oracle यूनिवर्सल इंस्टालर 12.2 में एक बग है, यह ODP.NET घटकों को पंजीकृत नहीं करता है। आप उन्हें ठीक से कॉन्फ़िगर करने के लिए नीचे स्क्रिप्ट चला सकते हैं (अपने सिस्टम के अनुसार फ़ोल्डर नामों को संशोधित करें)।

set Oracle_x64=c:\oracle\product\12.1\Client_x64\odp.net
set OraProvCfg_x64=%Oracle_x64%\bin\4\OraProvCfg.exe

set Oracle_x86=c:\oracle\product\12.1\Client_x86\odp.net
set OraProvCfg_x86=%Oracle_x86%\bin\4\OraProvCfg.exe

set TNS_ADMIN=C:\oracle\network\admin



IF EXIST "%Oracle_x64%\managed\common\Oracle.ManagedDataAccess.dll" "%OraProvCfg_x64%" /action:gac /providerpath:%Oracle_x64%\managed\common\Oracle.ManagedDataAccess.dll
IF EXIST "%Oracle_x64%\managed\PublisherPolicy\4\Policy.4.121.Oracle.ManagedDataAccess.dll" "%OraProvCfg_x64%" /action:gac /providerpath:%Oracle_x64%\managed\PublisherPolicy\4\Policy.4.121.Oracle.ManagedDataAccess.dll
IF EXIST "%Oracle_x64%\managed\PublisherPolicy\4\Policy.4.122.Oracle.ManagedDataAccess.dll" "%OraProvCfg_x64%" /action:gac /providerpath:%Oracle_x64%\managed\PublisherPolicy\4\Policy.4.122.Oracle.ManagedDataAccess.dll

IF EXIST "%Oracle_x64%\managed\common\Oracle.ManagedDataAccess.dll" "%OraProvCfg_x64%" /action:config /product:odpm /frameworkversion:v4.0.30319 /providerpath:%Oracle_x64%\managed\common\Oracle.ManagedDataAccess.dll /set:settings\TNS_ADMIN:%TNS_ADMIN%
IF EXIST "%Oracle_x86%\managed\common\Oracle.ManagedDataAccess.dll" "%OraProvCfg_x86%" /action:config /product:odpm /frameworkversion:v4.0.30319 /providerpath:%Oracle_x86%\managed\common\Oracle.ManagedDataAccess.dll /set:settings\TNS_ADMIN:%TNS_ADMIN%

rem Oracle.ManagedDataAccessDTC was used in earlier versions, not used anymore
"%OraProvCfg_x64%" /action:ungac /providerpath:Oracle.ManagedDataAccessDTC

IF EXIST "%Oracle_x64%\bin\2.x\Oracle.DataAccess.dll" "%OraProvCfg_x64%" /action:gac /providerpath:%Oracle_x64%\bin\2.x\Oracle.DataAccess.dll
IF EXIST "%Oracle_x64%\PublisherPolicy\2.x\Policy.2.102.Oracle.DataAccess.dll" "%OraProvCfg_x64%" /action:gac /providerpath:%Oracle_x64%\PublisherPolicy\2.x\Policy.2.102.Oracle.DataAccess.dll
IF EXIST "%Oracle_x64%\PublisherPolicy\2.x\Policy.2.111.Oracle.DataAccess.dll" "%OraProvCfg_x64%" /action:gac /providerpath:%Oracle_x64%\PublisherPolicy\2.x\Policy.2.111.Oracle.DataAccess.dll
IF EXIST "%Oracle_x64%\PublisherPolicy\2.x\Policy.2.112.Oracle.DataAccess.dll" "%OraProvCfg_x64%" /action:gac /providerpath:%Oracle_x64%\PublisherPolicy\2.x\Policy.2.112.Oracle.DataAccess.dll
IF EXIST "%Oracle_x64%\PublisherPolicy\2.x\Policy.2.121.Oracle.DataAccess.dll" "%OraProvCfg_x64%" /action:gac /providerpath:%Oracle_x64%\PublisherPolicy\2.x\Policy.2.121.Oracle.DataAccess.dll
IF EXIST "%Oracle_x64%\PublisherPolicy\2.x\Policy.2.122.Oracle.DataAccess.dll" "%OraProvCfg_x64%" /action:gac /providerpath:%Oracle_x64%\PublisherPolicy\2.x\Policy.2.122.Oracle.DataAccess.dll

IF EXIST "%Oracle_x64%\bin\4\Oracle.DataAccess.dll" "%OraProvCfg_x64%" /action:gac /providerpath:%Oracle_x64%\bin\4\Oracle.DataAccess.dll
IF EXIST "%Oracle_x64%\PublisherPolicy\4\Policy.4.112.Oracle.DataAccess.dll" "%OraProvCfg_x64%" /action:gac /providerpath:%Oracle_x64%\PublisherPolicy\4\Policy.4.112.Oracle.DataAccess.dll
IF EXIST "%Oracle_x64%\PublisherPolicy\4\Policy.4.121.Oracle.DataAccess.dll" "%OraProvCfg_x64%" /action:gac /providerpath:%Oracle_x64%\PublisherPolicy\4\Policy.4.121.Oracle.DataAccess.dll
IF EXIST "%Oracle_x64%\PublisherPolicy\4\Policy.4.122.Oracle.DataAccess.dll" "%OraProvCfg_x64%" /action:gac /providerpath:%Oracle_x64%\PublisherPolicy\4\Policy.4.122.Oracle.DataAccess.dll

IF EXIST "%Oracle_x86%\bin\2.x\Oracle.DataAccess.dll" "%OraProvCfg_x86%" /action:gac /providerpath:%Oracle_x86%\bin\2.x\Oracle.DataAccess.dll
IF EXIST "%Oracle_x86%\PublisherPolicy\2.x\Policy.2.102.Oracle.DataAccess.dll" "%OraProvCfg_x86%" /action:gac /providerpath:%Oracle_x86%\PublisherPolicy\2.x\Policy.2.102.Oracle.DataAccess.dll
IF EXIST "%Oracle_x86%\PublisherPolicy\2.x\Policy.2.111.Oracle.DataAccess.dll" "%OraProvCfg_x86%" /action:gac /providerpath:%Oracle_x86%\PublisherPolicy\2.x\Policy.2.111.Oracle.DataAccess.dll
IF EXIST "%Oracle_x86%\PublisherPolicy\2.x\Policy.2.112.Oracle.DataAccess.dll" "%OraProvCfg_x86%" /action:gac /providerpath:%Oracle_x86%\PublisherPolicy\2.x\Policy.2.112.Oracle.DataAccess.dll
IF EXIST "%Oracle_x86%\PublisherPolicy\2.x\Policy.2.121.Oracle.DataAccess.dll" "%OraProvCfg_x86%" /action:gac /providerpath:%Oracle_x86%\PublisherPolicy\2.x\Policy.2.121.Oracle.DataAccess.dll
IF EXIST "%Oracle_x86%\PublisherPolicy\2.x\Policy.2.122.Oracle.DataAccess.dll" "%OraProvCfg_x86%" /action:gac /providerpath:%Oracle_x86%\PublisherPolicy\2.x\Policy.2.122.Oracle.DataAccess.dll

IF EXIST "%Oracle_x86%\bin\4\Oracle.DataAccess.dll" "%OraProvCfg_x86%" /action:gac /providerpath:%Oracle_x86%\bin\4\Oracle.DataAccess.dll
IF EXIST "%Oracle_x86%\PublisherPolicy\4\Policy.4.112.Oracle.DataAccess.dll" "%OraProvCfg_x86%" /action:gac /providerpath:%Oracle_x86%\PublisherPolicy\4\Policy.4.112.Oracle.DataAccess.dll
IF EXIST "%Oracle_x86%\PublisherPolicy\4\Policy.4.121.Oracle.DataAccess.dll" "%OraProvCfg_x86%" /action:gac /providerpath:%Oracle_x86%\PublisherPolicy\4\Policy.4.121.Oracle.DataAccess.dll
IF EXIST "%Oracle_x86%\PublisherPolicy\4\Policy.4.122.Oracle.DataAccess.dll" "%OraProvCfg_x86%" /action:gac /providerpath:%Oracle_x86%\PublisherPolicy\4\Policy.4.122.Oracle.DataAccess.dll

अपडेट करें

Oracle Doc ID 2272241.1 के अनुसार ऐसा लगता है:

इस पर लागू होता है:
.NET के लिए Oracle डेटा प्रदाता - संस्करण 12.1.0.2 और बाद में
माइक्रोसॉफ्ट विंडोज x64 (64-बिट)
माइक्रोसॉफ्ट विंडोज (32-बिट)

लक्षण
.Net के लिए 12.2 Oracle डेटा प्रदाता संस्थापित करते समय, प्रदाता ग्लोबल असेंबली कैश (जीएसी) में स्वचालित रूप से पंजीकृत नहीं है।

परिवर्तन
.Net के लिए Oracle प्रदाता के 12.2 संस्करण में ले जाया गया

कारण
यह अपेक्षित व्यवहार है। चूंकि बहुत सारे वातावरण उपयोग कर रहे हैं ODP.Net के कई संस्करण साथ-साथ, 12.2 से शुरू होते हुए, इंस्टॉलर स्वचालित रूप से ODP.Net प्रदाता को पंजीकृत नहीं करता है डिफ़ॉल्ट रूप से जीएसी।

समाधान
दस्तावेज़ आईडी में उल्लिखित अनुसार मैन्युअल रूप से dll को GAC में पंजीकृत करें 1169890.1: हाउटो: ओरेकल असेंबली को ग्लोबल असेंबली कैश से जोड़ने/निकालने के लिए OraProvCfg.exe का उदाहरण उपयोग

हालांकि, मैं इसे एक बग के रूप में मानूंगा। ODP.Net के कई संस्करणों को साथ-साथ चलाना काफी कठिन है, क्योंकि Oracle.DataAccess.dll के संस्करण का बिल्कुल Oracle क्लाइंट के संस्करण से मेल खाना है। एक से अधिक Oracle क्लाइंट स्थापित करना (अर्थात 64-बिट और 32-बिट के लिए प्रत्येक में एक से अधिक) आमतौर पर बहुत सारी समस्याओं का कारण बनता है और यह असामान्य है।

1
Wernfried Domscheit 17 अप्रैल 2019, 11:45