সরবরাহকারী ওরাকল ক্লায়েন্টের সংস্করণের সাথে সামঞ্জস্যপূর্ণ নয়


157

আমি ওরাকল ODP.NET 11g (11.1.0.6.20) ডেটা সরবরাহকারী হিসাবে আমার এএসপি.net প্রকল্পে তাত্ক্ষণিক ক্লায়েন্টটি ব্যবহার করার চেষ্টা করছি তবে আমি যখন এসপেক্স পৃষ্ঠাটি চালাই আমি একটি " সরবরাহকারীর সংস্করণটির সাথে সামঞ্জস্যপূর্ণ নয় ওরাকল ক্লায়েন্ট এর "ত্রুটি বার্তা। কোন সাহায্য প্রশংসা করা হবে।

আমি ভিজ্যুয়াল স্টুডিও 2005 সালে ডেটা সরবরাহকারীকে উল্লেখ করেছি এবং এর পিছনের কোডটি এর মতো দেখাচ্ছে:

using Oracle.DataAccess.Client;
..

OracleConnection oOracleConn = new OracleConnection();
oOracleConn.ConnectionString =
    "Data Source=MyOracleServerName;" +
    "Integrated Security=SSPI";
oOracleConn.Open();

//Do Something

oOracleConn.Close();

পৃষ্ঠার ত্রুটিটি দেখতে এরকম দেখাচ্ছে:

Exception Details: Oracle.DataAccess.Client.OracleException: The provider is not compatible with the version of Oracle client

Source Error: 
Line 21: 
Line 22: 
Line 23:             OracleConnection oOracleConn = new OracleConnection();
Line 24:             oOracleConn.ConnectionString =
Line 25:                 "Data Source=MyOracleServerName;" +

[OracleException (0x80004005): The provider is not compatible with the version of Oracle client]
   Oracle.DataAccess.Client.OracleInit.Initialize() +494
   Oracle.DataAccess.Client.OracleConnection..cctor() +483

Stack Trace: 
[TypeInitializationException: The type initializer for 'Oracle.DataAccess.Client.OracleConnection' threw an exception.]
   Oracle.DataAccess.Client.OracleConnection..ctor() +0
   Boeing.IVX.Web.RoyTesting.Page_Load(Object sender, EventArgs e) in C:\Documents and Settings\CE218C\Desktop\IVX.Net\Web\IVX\RoyTesting.aspx.cs:23
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +15
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +33
   System.Web.UI.Control.OnLoad(EventArgs e) +99
   System.Web.UI.Control.LoadRecursive() +47
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1436

উত্তর:


91

আমি এই সমস্যাটি আরও খতিয়ে দেখছি, এবং আপনার কেবলমাত্র ওডিপি-নেট এর একই ডাউনলোড করা সংস্করণ থেকে সমস্ত উপযুক্ত ডিএলএল ধরে নেওয়া উচিত এবং সেগুলি আপনার এক্সী ফাইলের মতো একই ফোল্ডারে রেখে দেওয়া উচিত, কারণ ওডিপি.নেট মেশানো না নিয়ে উদ্বিগ্ন সংস্করণ সংখ্যা

আমি এখানে এটি কীভাবে করব তা ব্যাখ্যা করেছি: http://splinter.com.au/using-the-new-odpnet-to-access-oracle-from-c এখানে এর সংক্ষিপ্ত বিবরণ এখানে:

  • ODP.Net ডাউনলোড করুন
  • ফাইলটি আনজিপ করুন
  • এতে সমস্ত জেআর-কে আনজিপ করুন
  • এই দেলগুলি সবেমাত্র আনজিপ করা হয়েছে তা ধরুন:
    • oci.dll ('oci.dll.dbl' থেকে নতুন নামকরণ করা হয়েছে)
    • Oracle.DataAccess.dll
    • oraociicus11.dll
    • OraOps11w.dll
    • orannzsbb11.dll
    • oraocci11.dll
    • ociw32.dll ('ociw32.dll.dbl' থেকে নতুন নামকরণ করা হয়েছে)
  • সমস্ত ডিএলএলগুলি আপনার সি # এক্সিকিউটেবলের মতো একই ফোল্ডারে রাখুন

4
আপনার সমাধানটি আমার পক্ষে কাজ করেছে - এটি খুঁজে পাওয়ার আগে আপনার ব্লগ পোস্টটি খুঁজে পেয়েছি। তুমি আসল পুরুষ. ধন্যবাদ! :-) এছাড়াও, ওড্যাকের সর্বশেষতম সংস্করণটি ব্যবহার করে, আমার কোনও জারগুলি আনজিপ করার দরকার নেই ... .dll ফাইলগুলি আমার ওরাকল হোমের বিভিন্ন ডিরেক্টরিতে অবস্থিত। একটি সাধারণ উইন্ডো অনুসন্ধান খুব তাড়াতাড়ি এগুলি চালু করে।
প্যান্ডিনকাস

10
এছাড়াও, আমি আমার বিকাশ মেশিনে ওড্যাকের সর্বশেষ সংস্করণ (১১.২.০.১.২) ব্যবহার করছিলাম এবং আমার কেবলমাত্র ফাইলগুলির দরকার ছিল: oci.dll, Oracle.DataAccess.dll, oraociei11.dll, OraOps11w.dll। ক্রিস যেমন উল্লেখ করেছেন, ঠিক একই ফোল্ডারে আপনার এক্সিকিউটেবল হিসাবে নিশ্চিত করুন। ;-)
প্যানডিনকস

1
নতুন সংস্করণের মতো শব্দগুলি dll এর সন্ধান করা আরও সহজ করে তোলে। গ্রেট! এখন আর কতক্ষণ পর্যন্ত ওরাকল এগুলিকে একটি সাধারণ dll এ রোল করে ...
ক্রিস

ক্রিস 'কৌশল এবং প্যানডিনকস' গ্রন্থাগার সেটটি আমার পক্ষে কাজ করেছিল। আমি পাওয়ারশেলের মাধ্যমে ওরাকল ক্লায়েন্টকে কল করছি, তাই আমি লাইব্রেরিটি পাওয়ারশেল এক্সিকিউটেবল ডিরেক্টরিতে সেট করে দিয়েছি।
কুইলব্রেকার

1
আপনি যদি পারেন তবে সম্ভবত এই দিনগুলিতে সি # পরিচালিত ড্রাইভার ব্যবহার করা উচিত :)
ক্রিস

47

আপনার এখানে সমস্ত x86 / x64 আলাপ শুরু করার জন্য "উপেক্ষা" করা উচিত এবং এর পরিবর্তে ODP.NET পরিচালিত ড্রাইভারটি চেষ্টা করুন (যদি আপনি। নেট ভি 4 + ব্যবহার করছেন):

https://www.nuget.org/packages/Oracle.ManagedDataAccess/

https://www.nuget.org/packages/Oracle.ManagedDataAccess.EntityFramework/

ওরাকল ODP.net পরিচালিত বনাম পরিচালনাবিহীন ড্রাইভার Dri

আর্কিটেকচারটি কী কী ডিএলএল "অব্যবস্থাপিত" এড়িয়ে চলুন! : ডি (প্রায় সময় ওরাকল)।

নিউগেট প্যাকেজ (এটিও 11 জি এর জন্য কাজ করে):

এখানে চিত্র বর্ণনা লিখুন

পুরানো / ম্যানুয়াল পদ্ধতি:

পরিচালিত গ্রন্থাগারগুলি কীভাবে রূপান্তর করতে হয় সে সম্পর্কে তথ্যের জন্য :

  • প্রথমত, এখানে একটি বড় কোড তুলনা হয় পরিচালিত বনাম অপরিচালিত : http://docs.oracle.com/cd/E51173_01/win.122/e17732/intro005.htm#ODPNT148
  • আপনি কেবল ODP.NET, পরিচালিত ড্রাইভার Xcopy সংস্করণ ডাউনলোড করেছেন তা নিশ্চিত করুন
  • ডাউনলোড জিপ ফাইল থেকে, অনুলিপি করুন এবং আপনার প্রকল্প ডিরেক্টরিতে পেস্ট করুন:
    • Oracle.ManagedDataAccessDTC.dll
    • Oracle.ManagedDataAccess.dll
  • Oracle.ManagedDataAccess.dll এ একটি রেফারেন্স যুক্ত করুন
  • নিশ্চিত হয়ে নিন যে আপনার ইএসপি প্রকাশিত হয়েছে ( ভিএস2010-এ অ্যাপ্লিকেশন ফোল্ডারে যুক্ত হয়েছে ) উভয় ঘরের সাথে

3
এটির সুসংবাদ যে ওরাকল অবশেষে একটি সম্পূর্ণ পরিচালিত ড্রাইভার রয়েছে has 100 মিমি ডিএল এর চারপাশে লগ করা একটি সত্য বোঝা হয়ে দাঁড়িয়েছে।
জাফিন

1
পরিচালিত ড্রাইভারটি আমার জন্য দুর্দান্ত কাজ করে - এটির উপরে যাওয়ার পর থেকে আমার কোনও সমস্যা হয়নি / আপনি আপনার প্রকল্পগুলি কোনও এসিপিইউ ইত্যাদিতে সেট করতে পারেন এবং এটি দুর্দান্ত কাজ করে :)
টড থমসন

5
ঠিক তাই সকলেই সচেতন, যদিও পরিচালিত সরবরাহকারীটি দুর্দান্ত, এতে সম্পূর্ণ সরবরাহকারীর জন্য অনুমোদিত অনেকগুলি বৈশিষ্ট্যের অভাব রয়েছে। যথা, ওরাকল এনক্রিপশনে অন্তর্নির্মিত।
জাস্টিন স্কাইলস

1
ওরাকলের ডকুমেন্টেশনটি খুব কম বলতে গেলে "বিক্ষিপ্ত" হতে থাকে। কিছু অসমর্থিত পদ্ধতিতে এখানে একটি ভাল লিঙ্ক । অতিরিক্তভাবে, ড্রাইভার নিজেই readmeএমন কিছু সীমাবদ্ধতার রূপরেখা নিয়ে আসে ।
জাস্টিন স্কাইলস

2
পরিচালিত ড্রাইভারের ব্যবহারই চূড়ান্ত সমাধান! আমি নিত্তমূর্তিটি প্রতিবারই করেছি যখন আমি মনে করি যে সমস্ত সময় ব্যয় হয়েছে যখন আমার সাথে এক
রকমের

35

আমি শুধু ইনস্টল .NET 2.0 (11.1.0.6.20) জন্য ওরাকল ডেটা সরবরাহকারী এবং আমি ইনস্টল করা হয়নি ওরাকল তাত্ক্ষনিক ক্লায়েন্ট (11.1.0.6.0)

আমি এটি ইনস্টল করেছি এবং ত্রুটিটি অদৃশ্য হয়ে গেছে!


3
আপনি কি ক্লায়েন্ট ইনস্টল না করে কেবল 4 টি তাত্ক্ষণিক ক্লায়েন্ট ডিএলএলকে আপনার EXE হিসাবে একই ফোল্ডারে অনুলিপি করতে পারবেন? (এই ফাইলগুলি: oci.dll orannzsbb11.dll oraocci11.dll oraociicus11.dll)
ক্রিস

2
@ ক্রিস: হ্যাঁ, আপনি পারেন। আমার অভিজ্ঞতায় যদিও আপনার দরকার আছে oci.dll, orannzsbb11.dll, oraociicus11.dll, oraops11w.dll, এবং oracle.dataaccess.dll
পাকম্যান

আমার চারপাশে অন্য উপায় - আমি ক্লায়েন্টটি ইনস্টল করেছি, তবে সরবরাহকারী নয়
ইভ।

33

এটি 32 বিট ওরাকল ক্লায়েন্টের বিরুদ্ধে একটি 64 বিট .NET রানটাইম চালানোর কারণে হতে পারে। আপনার সার্ভার আপনি যদি অ্যাপটি 64 বিটটিতে চালাচ্ছেন তবে এটি ঘটতে পারে। এটি 64 বিট রানটাইম সহ .NET অ্যাপটি চালাবে। 32 বিট রানটাইম চালানোর জন্য আপনি ভিএস-এ আপনার প্রকল্পে সিপিইউ পতাকা সেট করতে পারেন।


শুধু এই এক দৌড়ে। একটি (32-বিট) পরীক্ষামূলক অ্যাপ্লিকেশনটিতে কাজ করেছেন, তারপরে আইআইএস-এ পড়ে গেল। জড়িত সমস্ত অ্যাসেমব্লিকে 32-বিট করার প্রয়োজনের পরিবর্তে, আমি 32-বিট অ্যাপপুলে পরিবর্তিত হয়েছি।
anton.burger

22

আসুন একরকম সংক্ষিপ্তসার তৈরি করি:

ত্রুটি বার্তা "সরবরাহকারী ওরাকল ক্লায়েন্টের সংস্করণের সাথে সামঞ্জস্যপূর্ণ নয়" বিভিন্ন কারণে হতে পারে।

  • আপনার কোনও ওরাকল ক্লায়েন্ট ইনস্টল করা নেই। এই ক্ষেত্রে ত্রুটি বার্তাটি সত্যই বিভ্রান্তিকর।

    .NET (ODP.NET, অর্থাত্ ফাইল Oracle.DataAccess.dll) এর জন্য ওরাকল ডেটা সরবরাহকারীটি ওরাকল তাত্ক্ষণিক ক্লায়েন্টের অন্তর্ভুক্ত নয়, এটি আলাদাভাবে ইনস্টল করতে হবে ( 32-বিট ওরাকল ডেটা অ্যাক্সেস উপাদানগুলি (ওডিএসি) বা 64-বিট ওরাকল ডেটা অ্যাক্সেস উপাদানগুলি থেকে ডাউনলোড করুন ) ওড্যাক) ডাউনলোডগুলি ) বা আপনাকে ওরাকল ইউনিভার্সাল ইনস্টলার (ওইউআই) অনুসারে বিকল্পটি নির্বাচন করতে হবে।

    দ্রষ্টব্য, ওরাকল ডেটা সরবরাহকারী> = 12.1 ইনস্টল করার সময়, সরবরাহকারী স্বয়ংক্রিয়ভাবে জিএসি তে নিবন্ধিত হবে না। প্রয়োজনে আপনাকে এটি ম্যানুয়ালি রেজিস্ট্রেশন করতে হবে, ওরাকল ডক 2272241.1 দেখুন

  • ODP.NET এর সংস্করণ ওরাকল ক্লায়েন্টের ইনস্টলড সংস্করণটির সাথে মেলে না। আপনি এমনকি গৌণ সংস্করণ নম্বর পরীক্ষা করতে হবে! উদাহরণস্বরূপ, Oracle.DataAccess.dllসংস্করণ 4.112.3.0 ওরাকল ক্লায়েন্ট 11.2.0.4 এর সাথে সামঞ্জস্যপূর্ণ নয় । ODP.NET এবং ওরাকল ক্লায়েন্টের সংস্করণগুলি সাবধানতার সাথে পরীক্ষা করুন। আপনি ব্যবহার করতে পারেন sigcheck উপর oraociei*.dllএবং / অথবা OraOps*w.dllওরাকল ক্লায়েন্ট সংস্করণ জন্য।

    বিভিন্ন নম্বর স্কিম সম্পর্কে সচেতন হন। ফাইল সংস্করণ 4.112.3.0 মাধ্যম: .NET ফ্রেমওয়ার্ক সংস্করণ 4, ওরাকল রিলিজ 11.2.0.3.x

    এখানে ODP.NET সংস্করণ "1.x", "2.x" এবং "4.x" রয়েছে। এই সংখ্যাগুলি মাইক্রোসফ্ট। নেট ফ্রেমওয়ার্ক সংস্করণগুলির সাথে সম্পর্কিত 1.0.3705 / 1.1.4322, 2.0.50727 এবং 4.0.30319। ওরাকল ক্লায়েন্ট 11.1। পর্যন্ত সংস্করণ "1.x" উপলব্ধ ছিল। "4.x" সংস্করণটি ওরাকল ক্লায়েন্ট 11.2 এর সাথে প্রবর্তিত হয়েছিল

  • ODP.NET এর আর্কিটেকচার (32 বিট বা 64 বিট) আপনার অ্যাপ্লিকেশন আর্কিটেকচারের সাথে মেলে না। একটি 32 বিট অ্যাপ্লিকেশন কেবল 32 বিট ওরাকল ক্লায়েন্ট / ওডিপি.এনইটি সাথে কাজ করে যথাক্রমে bit৪ বিট অ্যাপ্লিকেশনটির জন্য bit৪ বিবিট ওরাকল ক্লায়েন্ট / ওডিপি.নেট প্রয়োজন। (যদি না আপনি ODP.NET পরিচালিত ড্রাইভার ব্যবহার করেন )

  • .NET ফ্রেমওয়ার্ক সংস্করণটি মেলে না। উদাহরণস্বরূপ, আপনি যদি লক্ষ্য .NET ফ্রেমওয়ার্ক 2.0 দিয়ে আপনার অ্যাপ্লিকেশনটি সংকলন করেন তবে আপনি ODP.NET সংস্করণ 4.x ব্যবহার করতে পারবেন না। .NET ফ্রেমওয়ার্ক টার্গেট সংস্করণটি ODP.NET এর সংস্করণের চেয়ে সমান বা উচ্চতর হতে হবে।

  • সংস্করণ Oracle.DataAccess.dllআপনার উন্নয়ন মেশিনে (অর্থাত সংস্করণ যখন সংকলন লোড করা হয়) লক্ষ্য মেশিনে সংস্করণের তুলনায় বেশি।

  • সচেতন থাকুন যে জিএসিOracle.DataAccess.dll থেকে লোড করা হতে পারে যা ডিফল্টরূপে স্থানীয়ভাবে সরবরাহিত ফাইলের চেয়ে অগ্রাধিকার গ্রহণ করে।

সলিউশন

  • ODP.NET পরিচালিত ড্রাইভার ব্যবহার করার কথা বিবেচনা করুন, এটি ওরাকল পৃষ্ঠা থেকে ডাউনলোড করা যেতে পারে: -৪ -বিট ওরাকল ডেটা অ্যাক্সেস উপাদান (ওডিএসি) ডাউনলোডগুলি । সেখানে আপনাকে কেবল Oracle.ManagedDataAccess.dllআপনার অ্যাপ্লিকেশন ডিরেক্টরিতে ফাইলটি অনুলিপি করতে হবে, অন্য কিছুই দরকার নেই। এটি 32 বিট এবং 64 বিট উভয়ের জন্য কাজ করে।

  • আপনার *.csproj, শ্রদ্ধা। *.vbprojআপনার রেফারেন্সটি ODP.NET এ সম্পাদনা করুন:

    <Reference Include="Oracle.DataAccess">
      <SpecificVersion>False</SpecificVersion>
      <Private>False</Private>
    </Reference>
    

    মত বৈশিষ্ট্য Version=...বা processorArchitecture=...প্রয়োজন হয় না। আপনার অ্যাপ্লিকেশান সঠিক লোড করা হবে Oracle.DataAccess.dllনির্বাচিত আর্কিটেকচার এবং লক্ষ্য .NET Framework উপর নির্ভর করে (প্রদত্ত এটি সঠিকভাবে ইনস্টল করা হয়) -> না 100% যাচাইকৃত

  • আপনি যদি লক্ষ্য মেশিনে ওরাকল ক্লায়েন্টের সংস্করণটি জানেন না (যেমন এটি আপনার গ্রাহকের মেশিন হতে পারে): উপরে বর্ণিত ডাউনলোড পৃষ্ঠায় যান এবং ওরাকল ডেটা অ্যাক্সেস উপাদানগুলির কমপক্ষে এক্সকপি সংস্করণটি ডাউনলোড করুন । জিপটি বের করুন এবং কেবল Oracle.DataAccess.dllফাইলটি আপনার স্থানীয় মেশিনে অনুলিপি করুন। আপনার ভিএস প্রকল্পে এটির (একটি সম্ভবত সম্ভবত পুরানো) ডিএলএল একটি রেফারেন্স করুন। এই ডিএলএলটির সংস্করণ হ'ল ওডিপি'র ন্যূনতম সংস্করণ your আপনার অ্যাপ্লিকেশনটি কাজ করবে N আপনি যখন নিজের অ্যাপ্লিকেশনটি চালান তখন GAC তে প্রকাশক নীতি আসলে ইনস্টল করা সংস্করণে পুনর্নির্দেশ করবে।

  • আমি একক ডিএলএল গ্রহণ এবং নির্দিষ্ট ফোল্ডারে সেগুলি অনুলিপি করা একটি স্মার্ট পদ্ধতির বলে মনে করি না। এটি একটি "নগ্ন" মেশিনে কাজ করতে পারে তবে আপনার টার্গেট মেশিনটি যদি কোনও ওরাকল পণ্য ইনস্টল করে থাকে তবে সংস্করণ অমিলের জন্য উচ্চ ঝুঁকি রয়েছে। আপনার মেশিন থেকে কোনও ওরাকল পণ্য আনইনস্টল করুন এবং একটি নতুন ইনস্টলেশন করুন। কীভাবে ওরাকল 11 জি (ক্লায়েন্ট) আনইনস্টল / সম্পূর্ণ অপসারণ করবেন তা একবার দেখুন ? এটি একটি সত্যিকারের পরিষ্কার মেশিন পেতে আদেশ।

  • যদি আপনাকে একই সাথে 32 বিট এবং 64 বিট অ্যাপ্লিকেশনগুলির সাথে কাজ করতে হয়, তবে একটি মেশিনে উভয় সংস্করণ ইনস্টল করতে এই নির্দেশনাটি অনুসরণ করুন:

OraClient11g_home1অনুমানগুলি : ওরাকল হোমকে বলা হয় , ক্লায়েন্ট সংস্করণটি 11gR2।

  • বিকল্পভাবে যে কোনও ইনস্টল করা ওরাকল ক্লায়েন্টকে অপসারণ করুন

  • উদাহরণস্বরূপ, মধ্যে ওরাকল x86 ক্লায়েন্ট ডাউনলোড এবং ইনস্টল করুন C:\Oracle\11.2\Client_x86

  • উদাহরণস্বরূপ, বিভিন্ন ফোল্ডারে ওরাকল x64 ক্লায়েন্ট ডাউনলোড এবং ইনস্টল করুন C:\Oracle\11.2\Client_x64

  • কমান্ড লাইন সরঞ্জামটি খুলুন,% WINDIR% \ System32 ফোল্ডারে যান সাধারণত ফোল্ডারে C:\Windows\System32একটি প্রতীকী লিঙ্ক তৈরি করুন (নীচে দেখুন)ora112C:\Oracle\11.2\Client_x64

  • পরিবর্তন ফোল্ডার% windir% \ SysWOW64, সাধারণত C:\Windows\SysWOW64একটি সিম্বলিক লিঙ্ক তৈরি ora112ফোল্ডারে C:\Oracle\11.2\Client_x86, (নিচে দেখুন)

  • পরিবর্তন করুন PATHএনভায়রনমেন্ট ভেরিয়েবল মত সমস্ত এন্ট্রি প্রতিস্থাপন C:\Oracle\11.2\Client_x86এবং C:\Oracle\11.2\Client_x64দ্বারা C:\Windows\System32\ora112, নিজ নিজ তাদের \binsubfolder। দ্রষ্টব্য: C:\Windows\SysWOW64\ora112অবশ্যই প্যাথ পরিবেশে থাকা উচিত নয়।

  • প্রয়োজনে ইয়োর ORACLE_HOMEপরিবেশ পরিবর্তনশীল সেট করুনC:\Windows\System32\ora112

  • আপনার রেজিস্ট্রি সম্পাদক খুলুন। রেজিস্ট্রি মান সেট HKLM\Software\ORACLE\KEY_OraClient11g_home1\ORACLE_HOMEকরতেC:\Windows\System32\ora112

  • সেট রেজিস্ট্রি মান HKLM\Software\Wow6432Node\ORACLE\KEY_OraClient11g_home1\ORACLE_HOMEথেকে C:\Windows\System32\ora112(না C:\Windows\SysWOW64\ora112)

  • তুমি পেরেছ! এখন আপনি একসাথে x86 এবং x64 ওরাকল ক্লায়েন্টকে একত্রে ব্যবহার করতে পারেন, অর্থাত্ একটি x86 অ্যাপ্লিকেশনটি x86 লাইব্রেরি লোড করবে, একটি এক্স 64 অ্যাপ্লিকেশন আপনার সিস্টেমে কোনও পরিবর্তন ছাড়াই x64 লাইব্রেরি লোড করবে।

প্রতীকী লিঙ্কগুলি তৈরি করতে আদেশ:

cd C:\Windows\System32
mklink /d ora112 C:\Oracle\11.2\Client_x64
cd C:\Windows\SysWOW64
mklink /d ora112 C:\Oracle\11.2\Client_x86

কিছু নোট:

  • উভয় প্রতীকী লিঙ্কের অবশ্যই একই নাম থাকতে হবে ora112

  • পরে আপনি নিজে থেকে ODP.NET ইনস্টল করতে চান তবে ইনস্টলেশনের জন্য উপযুক্ত ফোল্ডারগুলি নির্বাচন করার বিষয়ে যত্ন নিন।

  • তাদের নাম সত্ত্বেও ফোল্ডারে C:\Windows\System32x64 লাইব্রেরি C:\Windows\SysWOW64রয়েছে , যেখানে রয়েছে x86 (32-বিট) লাইব্রেরি। বিভ্রান্ত হবেন না।

  • হয়তো এটা আপনার সেট করতে একজন বিজ্ঞ বিকল্প TNS_ADMINএনভায়রনমেন্ট ভেরিয়েবল (রেস্প। TNS_ADMINউদাহরণস্বরূপ, একটি সাধারণ অবস্থান রেজিস্ট্রিতে এন্ট্রি) TNS_ADMIN=C:\Oracle\Common\network


এই আইএমওটির আসল উত্তরের চেয়ে বেশি জ্ঞান আছে। সুতরাং যদি আমার কাছে .net 4 এর জন্য একটি x86 অ্যাপ্লিকেশন রয়েছে এবং ডাটাবেস সংস্করণ 9i তে রয়েছে, তবে 32 অথবা 64-বিট উইন্ডোজ থাকলে কোনও ব্যবহারকারীর কী ক্লায়েন্টের সংস্করণ থাকা দরকার? ওরাকল বলেছেন যে কোনও ক্লায়েন্ট সংস্করণ যে কোনও ডিবি সংস্করণের সাথে সামঞ্জস্যপূর্ণ। 32-বিট ব্যবহারকারীদের সাথে উত্তরটি 32-বিট সংস্করণ ইনস্টল করে এবং 64-বিট ব্যবহারকারীরা 64-বিট সংস্করণ ইনস্টল করে এবং ওডিপি.নেট পরিচালিত ড্রাইভারটি কোন ওএসের সাথে কথা বলছে তা সিদ্ধান্ত নিতে ব্যবহার করে?
আলোকিত

1
আপনি যখন ODP.NET পরিচালিত ড্রাইভার ব্যবহার করেন তখন কোনও আরাকল ক্লায়েন্ট ইনস্টল করার প্রয়োজন হয় না - এটি এর মূল সুবিধা। এটি x86 এবং x64 অ্যাপ্লিকেশন উভয়ের সাথে কাজ করে। "ODP.NET পরিচালিত ড্রাইভার" ব্যতীত একটি x86 অ্যাপ্লিকেশনটির জন্য একটি x86 (অর্থাত্ 32-বিট) ওরাকল ক্লায়েন্টও প্রয়োজন, ডাটাবেস সার্ভারের আর্কিটেকচারটি যাই হোক না কেন।
ওয়ার্নফ্রিড ডমসচিট

আমি কেবল "মাইক্রোসফ্ট ভিজ্যুয়াল সি ++ 2010 পুনরায় বিতরণযোগ্য ইনস্টল করা দরকার" এ দৌড়েছি - আপনার এটির সংক্ষিপ্তসারটি যোগ করা উচিত।
জে সুলিভান

1
আমি মনে করি না যে এই ত্রুটিটি ওরাকল বা ওডিপি

এটি আমার পক্ষে কাজ করে, আমি Oracle.DataAccess.dllনুগেট প্যাকেজ থেকে ইনস্টল করি Oracle.DataAccess.x86এবং এর Dll সংস্করণটি 2.112.1.0তাই আমি ওরাকল ক্লায়েন্টের সাথে সংস্করণটি Oracle Database 11g Release 2 Client (11.2.0.1.0) for Microsoft Windows (x64) এখানে মেশান তবে সমস্যাটি সমাধান হয়েছে!
ইয়ু ইয়ং জিয়ান

6

বেশ কয়েক ঘন্টা সমস্যার সমাধানের পরে, আমি আমার প্রোজেক্টগুলি বিন ডিরেক্টরিতে Oracle.DataAccess.dll (v4.0) থাকার কারণে এই সমস্যাটি পেয়েছি বলে মনে করেছি, তবে রানটাইমও GAC থেকে Oracle.DataAccess.dll (v2.x) লোড করে। প্রকল্পের তথ্যসূত্রগুলিতে Oracle.DataAccess এন্ট্রি সরিয়ে ও পড়া আমার জন্য সমস্যার সমাধান করেছে।

এখানে উল্লিখিত অন্যান্য ফাইলগুলি আমার পরিস্থিতিতে প্রয়োজনীয় বলে মনে হয় নি।

হালনাগাদ

"সরবরাহকারী ওরাকল ক্লায়েন্টের সংস্করণের সাথে সামঞ্জস্যপূর্ণ নয়" এর মূল কারণটি (সাধারণত) পরিচালিত অ্যাসেমব্লীটি পরিচালনা করা লাইব্রেরিগুলি ভার্সনের সাথে মেলে না যা লোড করার চেষ্টা করছে। এটি প্রদর্শিত হয় আপনি ওয়েবকনফাইগ 1- এ লাইব্রেরির পাথ নির্দিষ্ট করে ওરેકল ড্রাইভারকে সঠিক লাইব্রেরি ব্যবহার করতে বাধ্য করতে পারেন

<configuration>
  <oracle.dataaccess.client>
    <settings>
      <add name="DllPath" value="C:\oracle\bin"/>
      <!-- ... -->
    </settings>
  </oracle.dataaccess.client>
</configuration>

ধন্যবাদ! আপনার সমাধানটি আমাকে এই ধারণাটি দেয় যে 2 দিন পরে কাজ করুন (আমার কাছে ভিজ্যুয়াল স্টুডিও 2010 নেট 4, ওরাকল 10 জি ক্লায়েন্ট রয়েছে) ... আমি জিএসি দেখতে পাচ্ছি এবং অবশ্যই আমি ওরাকল.ডাটাএ্যাকসেস.ডিএল এর 3 টি ভার্শন ইনস্টল করেছি, আমি সমস্তটি আনস্টলড করেছি (এবং "ডিবিপ্রভাইডার ফ্যাক্টরিগুলি") এ অবৈধ মেশিন কনফিগ কীগুলি মুছুন এবং কেবল ODAC1120320 x64 পুনরায় ইনস্টল করুন। এবং এটি কাজ করে।
হার্নাল্ডো গঞ্জালেজ

5

লক্ষ্য মেশিনে ODP.Net ইনস্টল করুন এবং এটি সমস্যার সমাধান করা উচিত ... ডেল এর অনুলিপি করা ভাল ধারণা বলে মনে হচ্ছে না ...


5

ওরাকল ১১ জি (১১.১.০..7.২০) এর জন্য আমাকে আমার এক্সের সাথে নীচের ঘরগুলিও কাজ করতে হয়েছিল।

  1. oci.dll
  2. OraOps11w.dll
  3. oraociicus11.dll (30mb এর কাছাকাছি বিশাল বিশাল)
  4. Oracle.DataAccess.dll

আপনি 130 এমবি বলতে চান
এলময়ে

2

আমার কাছে মনে হবে আপনার ওরাকল ইস্তান্ট ক্লায়েন্টের সাথে ওডিপি থাকলেও ওডিপি এর পরিবর্তে প্রকৃত ওরাকল ক্লায়েন্টটি ব্যবহার করার চেষ্টা করছে। আপনারও কি মেশিনে মানক ওরাকল ক্লায়েন্ট ইনস্টল করা আছে? আমি স্মরণ করি যে ওরাকল যখন একই মেশিনে একাধিক ক্লায়েন্টের কাছে আসে তখন এটি বেশ পিকে ছিল।


2

আমার ঠিক একই সমস্যা ছিল. আমি অ্যাপ্লিকেশনটি সংকলনের পরে oraociei11.dll মুছে ফেলেছি (এবং ভুলে গিয়েছি যে আমি মুছে ফেলেছি)। কার্যকর করার চেষ্টা করার সময় এটি এই ত্রুটিটি দিচ্ছিল। সুতরাং যখন এটি oraociei11.dll যে dll খুঁজে পাবে না, এটি এই ত্রুটিটি দেখায়। এটি যখন এই ত্রুটি দেয় তখন অন্যান্য কেস থাকতে পারে তবে এটি তাদের মধ্যে একটি বলে মনে হয়।


2

এছাড়াও আইআইএস অ্যাপ্লিকেশন পুলটি সন্ধান করুন 32-বিট সত্য বা মিথ্যা পতাকাটি সক্ষম করুন, আপনি যখন এই বার্তাটি দেখেন, তখন কিছু ওરેકল ফোরাম আমাকে এটির জন্য নির্দেশিত করে!


2

আমার একই সমস্যা আছে তবে আমার ক্ষেত্রে আমি কেবল বিন ফোল্ডারে ডলসগুলি অনুলিপি করতে পারি না, তবে আমি কেবল সমাবেশের সংস্করণটি 'রিবিন্ড' করি।

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <runtime>    
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89B483F429C47342" culture="neutral"/>
        <bindingRedirect oldVersion="2.112.2.0" newVersion="2.112.1.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

2

দীর্ঘ 3 ঘন্টা অব্যাহত থাকা এই সমস্যাটি সমাধান করার জন্য আমি এখানে কী করেছি:

  1. ওরাকল হোমের নীচে C:\oracle\product\11.2.0আমার কাছে একটি ফোল্ডার client_1ছিল যেখানে আমি ODP.NETউইন্ডোজ b৪ বিটের জন্য বিট ইনস্টল করেছিলাম ।

  2. পরবর্তীতে ভিজুয়াল স্টুডিও ২০১২ এর সাথে আমার এএসপি.নেট ওয়েব এপিআই অ্যাপটি ডিবাগ করার চেষ্টা করার সময়, আমি এই ত্রুটি বার্তাটি পেয়েছিলাম: সরবরাহকারী ওরাকল ক্লায়েন্টের সংস্করণের সাথে সামঞ্জস্যপূর্ণ নয়

  3. গুগল অনুসন্ধান করে আমি আবিষ্কার করেছি যে এটি ঘটছে কারণ আমি ODP.NET64 বিট ব্যবহার করছিলাম । তারপরে আমি ODP.NETউইন্ডোজ 32 বিটগুলির জন্য পেয়েছিলাম এবং এটি ইনস্টল করেছি তবে আমি একই ত্রুটি বার্তাটি পেয়েছি।

  4. সমাধান: ফোল্ডারটি মোছা হয়েছে client_1এবং ODP.NET32 বিট পুনরায় ইনস্টল করা হয়েছে । কিছুটা ইনস্টলার 32 বিট সংস্করণের সাথে 64 বিট সংস্করণ থেকে বিটগুলি মিশ্রিত করছিল। চিত্রে যান...

  5. এখন আমি আবার খুশি এবং আমি একটি নতুন খুলতে পারি OracleConnection। অবশেষে! :)


2

এখনও এই সমস্যাটি রয়েছে এমন কারও জন্য: এই নিবন্ধের ভিত্তিতে

http://oradim.blogspot.com/2009/09/odpnet-provider-is-not-compatible-with.html

আমি জানতে পেরেছিলাম যে আমার সার্ভারটি মাইক্রোসফ্ট সি ++ ভিজ্যুয়াল রানটাইম লাইব্রেরিটি অনুপস্থিত ছিল - ভিজুয়াল স্টুডিও ইনস্টল করার কারণে আমার ডেভ মেশিনে এটি ছিল। আমি এখান থেকে লাইব্রেরির সর্বশেষ সংস্করণ (বর্তমানে) ডাউনলোড এবং ইনস্টল করেছি:

http://www.microsoft.com/en-us/download/details.aspx?id=13523

সি # এর সেটআপ এবং ওরাকল কলটি রান করুন!


1
বাবু .... ওরাকল .... আমরা কি একটু আলোচনা করতে পারি? এখানে এসে, কোণে। শোনো মনুষ্য, আমি "প্রাপক সামঞ্জস্যপূর্ণ নয়" কী বোঝাতে চেয়েছিল তা বোঝার জন্য আমি সারাদিন কাটিয়েছি, কেবল পরে এটি খুঁজে বের করার জন্য যে কিছু ইনস্টলেশন নির্ভরতা পূরণ হয়নি। দয়া করে - না - আমি দাবি করছি যে আপনি ইনস্টলেশন ইনস্টলের সময় আপনার ইনস্টলারটি এই নির্ভরতাগুলি পরীক্ষা করে দেখুন , এবং যদি এটি পূরণ না হয় তবে ব্যবহারকারীকে সতর্ক করুন । ধন্যবাদ।
জে সুলিভান

3
যাইহোক, একাধিক উপলক্ষে আমাকে এই স্ট্যাকওভারফ্লো প্রশ্নটিতে ফিরে আসতে হয়েছিল এবং প্রতিবারই আমার কাছে একটি আলাদা উত্তর প্রযোজ্য। এতে সময় এবং অর্থের অপচয় কী হয়েছে।
জে সুলিভান

2

টিএলডিআর সংস্করণ:

  • পরিবর্তে 12c 100% পরিচালিত সরবরাহকারী ব্যবহার করুন।
  • যদি আপনাকে অবশ্যই পুরানো সরবরাহকারীর ব্যবহার করতে হয় তবে আপনাকে Oracle.DataAccess.dll নির্দেশিত অপরিশোধিত ওরাকল ক্লায়েন্ট ডলসকে সঠিক সংস্করণে নির্দেশ করতে হবে। আপনার মেশিনে যদি একাধিক ওরাকল ক্লায়েন্ট ইনস্টল থাকে তবে আপনার অ্যাপ্লিকেশন কনফিগারেশনে "DllPath" কনফিগারেশন ভেরিয়েবল (নীচে দেখুন) অন্তর্ভুক্ত এমন একটি সহজসাধ্য বিষয় রয়েছে, তবে আপনাকে নির্দেশ করতে নতুন ওરેકল ক্লায়েন্টও ইনস্টল করতে হবে।

পূর্ণ সংস্করণ:

প্রথমে নিশ্চিত হয়ে যাক যে আমরা পুরানো অনাস্থাবিহীন সরবরাহকারীর উপাদানগুলি (নতুন 12 সি 100% পরিচালিত সরবরাহকারী নয়) বুঝতে পারি। এটি দুটি টুকরা দিয়ে তৈরি:

  1. পরিচালিত। নেট উপাদান - Oracle.DataAccess.dll
  2. অপরিকল্পিত (অ-নেটওয়ার্ক) ক্লায়েন্ট

সরলভাবে বলতে গেলে, ওরাকল.ডাটাএ্যাকসেস.ডিএল হ'ল প্রায় একটি মোড়ক, বিন্যাসহীন ক্লায়েন্টের জন্য ORACLE-NET নির্দেশিকায় নেট নির্দেশাবলী অনুবাদ করে।

এটি বলেছিল, আপনি যখন ওরাকল.ডাটাএ্যাকসেস লোড করবেন তখন সেখানে একটি অর্ডার রয়েছে যাতে এটি পরিচালনা না করে থাকা ক্লায়েন্ট ডিলেস সনাক্ত করার চেষ্টা করে। থেকে ওরাকল ডকুমেন্টেশন :

Oracle.DataAccess.dll নিম্নলিখিত আদেশের উপর ভিত্তি করে নির্ভরশীল পরিচালনা না করা ডিএলএল (যেমন ওরাকল ক্লায়েন্ট) এর জন্য অনুসন্ধান করে:

অ্যাপ্লিকেশন বা এক্সিকিউটেবলের ডিরেক্টরি।

অ্যাপ্লিকেশন কনফিগারেশন বা ওয়েবকনফিগ দ্বারা নির্দিষ্ট 2.DllPath সেটিং।

3.DllPath মেশিন। কনফিগ দ্বারা নির্দিষ্ট সেটিংস।

4.DllPath উইন্ডোজ রেজিস্ট্রি দ্বারা নির্দিষ্ট সেটিংস।

HKEY_LOCAL_MACHINE \ SOFTWARE \ ওরাকল \ ODP.NET \ সংস্করণ \ DllPath

5. উইন্ডোজ PATH পরিবেশ পরিবর্তনশীল দ্বারা নির্দিষ্ট ডিরেক্টরি D

সুতরাং আপনার ক্ষেত্রে, আপনার অ্যাপ্লিকেশন উপরে এই প্রক্রিয়াটি অনুসরণ করেছে এবং আপনি ব্যবহার করছেন এমন Oracle.DataAccess.dll বিধানসভাটির তুলনায় অনেক পুরানো তুলনামূলক ব্যবস্থাবিহীন ঘড়ির এমন একটি পথ খুঁজে পেয়েছে।

এটি কেবল এমন হতে পারে যে সেই মেশিনে একমাত্র ওরাকল ক্লায়েন্ট ইনস্টল করা খুব পুরানো। তবে এটি কার্যকর হয় যদি আপনার মেশিনে একাধিক ক্লায়েন্ট ইনস্টল থাকে এবং পরিচালনা না করা ফাইলগুলি অন্য কোনও তবে পুরানো ইনস্টলেশনে প্রথমে পাওয়া যায়। যদি পরে, সাধারণ কাজটি হ'ল আপনার কনফিগারেশনে dllPath কনফিগারেশন ভেরিয়েবলটি ব্যবহার করুন এবং এটিকে সঠিক ওরাকল হোম বিন ফোল্ডারে চিহ্নিত করুন:

<configuration>
  <oracle.dataaccess.client> 
    <add key="DllPath" value="c:\oracle\product\1.1.0-xcopy-dep\BIN"/>
  </oracle.dataaccess.client>
</configuration>

আপনি যদি ক্লায়েন্টের একটি নতুন কপি ইনস্টল করতে চান তবে এক্সকপি সংস্করণটি সবচেয়ে ছোট এবং এতে "তাত্ক্ষণিক ক্লায়েন্ট" রয়েছে এবং উপরে DllPathটিকে এই নতুন অবস্থানে নির্দেশ করুন। তবে যে কোনও ওরাকল ক্লায়েন্ট ইনস্টল কাজ করবে।

তবে আপনি যদি এই সমস্ত পরিচালনা না করা ক্লায়েন্ট রেজোলিউশন স্টাফ এড়াতে চান তবে দেখুন 100% পরিচালিত সরবরাহকারীর পরিবর্তে আপনি আপনার অ্যাপ্লিকেশনটি আপডেট করতে পারেন কিনা - এটি সত্যিই কেবল দু'একটি পরিচালিত অ্যাসেমব্লি, বিনা ব্যবস্থাপনার ফাইলগুলির উপর কোনও নির্ভরতা ছাড়াই।

এটিও সম্ভব যে আপনি ওরাকল.ডাটাএ্যাক্সেস.ডিল লোড করছেন না যে আপনি যদি মনে করেন যে আপনি যদি এটি আপনার বিন ডিরেক্টরি এবং আপনার জিএসি উভয় ক্ষেত্রেই ইনস্টল করেন তবে আমি মনে করি যে এটির সম্ভাবনা কম। দেখুন সমাবেশ রেজল্যুশন প্রক্রিয়া আরও তথ্যের জন্য।


1

ওরাকল ডিরেক্টরিতে আইআইএস / আইডব্লিউএম ব্যবহারকারীর কি অনুমতি আছে? আপনি কি এক্সেল বা অ্যাক্সেসের মতো অন্য অ্যাপ্লিকেশন ব্যবহার করে এই ডেটা উত্সের সাথে সংযোগ স্থাপন করতে পারেন?


1

আমাদের একই সমস্যা ছিল, কারণ একটি নেটওয়ার্ক শেয়ারে ওরাকল.ডাটা.ডিল সমাবেশ আমাদের ডিবিএ দ্বারা আপডেট হয়েছিল's প্রকল্প থেকে রেফারেন্স সরিয়ে, এবং এটি আবার যুক্ত করা সমস্যার সমাধান করেছে।


1

এই সমস্যাটি সমাধানের জন্য মাত্র দুটি পদক্ষেপ।

  1. অ্যাপ্লিকেশন পুলের অগ্রিম সেটিংয়ে যান এবং সত্যে '32 বিট অ্যাপ্লিকেশন সক্ষম করুন' পতাকাটি সেট করুন।
  2. আপনার বিনের সমস্ত ডলগুলি এখন 32 বিটের সংস্করণ রয়েছে তা নিশ্চিত করুন ...

ভাগ্য সুপ্রসন্ন হোক.


@ মাজহার-আব্বাস, আপনি প্লিজ পারেন? আমি "32 বিট অ্যাপ্লিকেশন সক্ষম করুন" সেট করতে পারি? এটি আইআইএস বা প্রকল্পে আছে?
হাইফাই

1

আমি নতুন ডিএলএল পাওয়ার রাস্তায় নামিনি। আমাদের কাছে প্রচুর বিদ্যমান প্রকল্পগুলি ছিল যা পুরোপুরি সূক্ষ্মভাবে কাজ করে এবং এটি কেবলমাত্র আমার নতুন প্রকল্প যা আমাকে মাথা ব্যাথা দিয়েছিল তাই আমি অন্য কিছু চেষ্টা করার সিদ্ধান্ত নিয়েছিলাম।

আমার প্রকল্পটি অভ্যন্তরীণভাবে উন্নত ইন্টারনাল.ডিল ব্যবহার করছে যা ওরাকল.ডাটাএ্যাক্সেস.ডিলের উপর নির্ভর করে v4.112.3.0। কোনও কারণে, প্রকাশের সময়, ভিজ্যুয়াল স্টুডিও সর্বদা আপলোড হয় v4.121.0.0, যদিও এটি কোনও কনফিগার ফাইলে স্পষ্টভাবে নির্দিষ্ট করা হয়নি। সে কারণেই আমি একটি ত্রুটি পাচ্ছিলাম।

সুতরাং আমি যা করেছি তা হ'ল:

  1. সফলভাবে চলমান প্রকল্পগুলির মধ্যে একটি থেকে আমার ওয়েবসাইটের /bin(কেবল নিরাপদ দিকে থাকতে) অনুলিপি করা হয়েছে ।
  2. সফলভাবে চলমান প্রকল্পগুলির মধ্যে একটি থেকে আমার ওয়েবসাইটটিতে অনুলিপি করেছেন Oracle.DataAccess.dll /bin
  3. আমার ওয়েবসাইট থেকে তাদের উভয়কেই রেফারেন্স যুক্ত করুন।
  4. অবশেষে ওরাকল.ডাটাএ্যাক্সেস রেফারেন্সটি দেখানো হয়েছে myWebSite.csproj, তবে এটি ভুল সংস্করণটি দেখিয়েছে: v4.121.0.0পরিবর্তে v4.112.3.0
  5. আমি ম্যানুয়ালি রেফারেন্সটিকে এতে পরিবর্তন করেছি myWebSite.csproj, সুতরাং এটি এখন পড়বে:

    <Reference Include="Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>bin\Oracle.DataAccess.dll</HintPath>
    </Reference> 

2
এটা একটা ব্যাপার সত্যিই খারাপ ধারণা একটি বিন ফোল্ডারে ডিএলএল একটি রেফারেন্স যোগ করতে।
জে সুলিভান

1
binএবং objফোল্ডার হয় আউটপুট ফোল্ডার; আপনি যখন আপনার প্রকল্পটি তৈরি করেন তখন dlls যায়। আপনার দ্বন্দ্ব তৈরি না করে যে কোনও সময় এই ফোল্ডারগুলি মুছতে সক্ষম হওয়া উচিত। সাধারণত এই ফোল্ডারগুলি উত্স নিয়ন্ত্রণে উপেক্ষা করা হয়। মান অনুশীলন হ'ল এমন একটি External Referencesফোল্ডার তৈরি করা যেখানে আপনি আপনার রেফারেন্সড ডিএল রাখেন put
জে সুলিভান

@ নোটফিড মনে হচ্ছে আপনি ঠিক বলেছেন। এটি আমার মনে রাখবে।
রোবোট্রন

নাম হিসাবে এটি সংকলকটির জন্য কেবল একটি ইঙ্গিতের পথ, জোর করে রেফারেন্স নয়। প্রথমে জিএসি অনুসন্ধান করা হয় ওরাকল.ডাটাএ্যাক্সেস.ডিলের জন্য। আপনি HintPathপুরোপুরি মুছে ফেললেও এটি কাজ করা উচিত ।
ওয়ার্নফ্রিড ডমসচাইট

1

আমি ভিজ্যুয়াল স্টুডিও 2015 এর জন্য ওরাকল ডেটা সরঞ্জামগুলি ইনস্টল করার পরে এবং তারাকলির সাথে ভাল সময় কাটানোর পরে এই সমস্যার মুখোমুখি হয়েছি। আমি সিদ্ধান্ত নিয়েছি ফাইল অনুলিপি, কনফিগারেশন পরিবর্তন ইত্যাদির সাথে এই গোলযোগের পরিবর্তে আবার ওরাকল ক্লায়েন্টকে পুনরায় ইনস্টল করার চেষ্টা করব এবং এটি আমার পক্ষে কাজ করে।


1

আমি একই ধরণের সমস্যার মুখোমুখি হয়েছিলাম এবং এর মূল কারণটি হ'ল জিএসি এর 2 টি ওরাকল.ডাটাএকসেস সংস্করণ ছিল যেমন v4.0_4.112.2.0 এবং v4.0_4.112.4.0। আমার অ্যাপ্লিকেশনটি v4.0_4.112.2.0 উল্লেখ করছে, সুতরাং আমি যখন জিএসি থেকে v4.0_4.112.4.0 অপসারণ করেছি, এটি দুর্দান্ত কাজ করেছে।

জিএসি পথ: সি: \ উইন্ডোজ \ মাইক্রোসফ্ট.নেট \ সমাবেশ \ জিএসি_64৪ \ ওরাকল.ডাটাএ্যাক্সেস

আগে : এখানে চিত্র বর্ণনা লিখুন

পরে: এখানে চিত্র বর্ণনা লিখুন

কোনও সংস্করণ অপসারণ করতে, কেউ কেবল জিএসি থেকে সংশ্লিষ্ট ফোল্ডারটি মুছতে পারে।


0

সম্প্রতি আমাকে একটি পুরানো প্রকল্পে কাজ করতে হয়েছিল যেখানে সমাধান এবং সমস্ত ধারণাগুলি x32 প্ল্যাটফর্মকে লক্ষ্যযুক্ত করা হয়েছিল। আমি ওরাকল.ডাটাএ্যাক্সেস.ডিল এবং অন্যান্য সমস্ত প্রস্তাবিত ওরাকল ফাইলগুলি সমস্ত স্থানে অনুলিপি করার চেষ্টা চালিয়েছি, তবে প্রতিবার দেওয়ালে আঘাত করেছি। অবশেষে মাথার বাল্বটি জ্বলে উঠল (8 ঘন্টা পরে :)), এবং ইনস্টল করা ওডিএসি অ্যাসেম্বলিগুলি এবং তাদের প্ল্যাটফর্মের জন্য পরীক্ষা করতে বলে। আমি ইতিমধ্যে সমস্ত the৪-বিট (x64) ওড্যাক ক্লায়েন্ট ইনস্টল করে রেখেছি তবে 32 বিট বেশী (x32) নেই। 32-বিট ওড্যাক ইনস্টল করা হয়েছে এবং সমস্যাটি অদৃশ্য হয়ে গেছে।

ইনস্টল করা ওড্যাকের সংস্করণটি কীভাবে পরীক্ষা করবেন: ফোল্ডার সি: \ উইন্ডোজ \ অ্যাসেমব্লিতে দেখুন। "প্রসেসর আর্কিটেকচার" সম্পত্তি ইনস্টল করা ওড্যাকের প্ল্যাটফর্মটি অবহিত করবে।

বাল্বটি জ্বলতে আট ঘন্টা দীর্ঘ সময় লাগে। আশ্চর্যের কিছু নেই যে আমাকে সবসময় কাজের ফাঁকে ফাঁকে বলতে হবে :)।


দ্রষ্টব্য, C:\Windows\assembliesকেবল NET ফ্রেমওয়ার্ক সংস্করণ 2.0 পর্যন্ত সমাবেশগুলি দেখায় shows সংস্করণ 3.x / 4.x প্রদর্শিত হয় না দেখতে stackoverflow.com/questions/28213105/...
Wernfried Domscheit

0

ক্রিসের সমাধানটি আমার পক্ষেও কাজ করেছিল। তবে আমি অনুসরণীয় ত্রুটি বার্তা পেয়েছি যা এতে বলেছে:

Could not load file or assembly 'Oracle.DataAccess' or one of its dependencies. An attempt was made to load a program with an incorrect format.

স্পষ্টতই, ওরাকলিশের বিদেশী ভাষায়, এর অর্থ হল যে আপনার প্রোগ্রামটি হয় সমস্ত প্ল্যাটফর্ম, বা 32-বিট মেশিনগুলিকে লক্ষ্য করে। কেবলমাত্র প্রোজেক্ট প্রোপার্টিতে আপনার টার্গেট প্ল্যাটফর্মটি 64৪-বিটে পরিবর্তন করুন এবং সেরাটির জন্য আশা করুন।


3
এটি আসলে .নিটিশ, ওরাকলিশ নয়
জে সুলিভান

0

আমার একই সমস্যা ছিল ওরাকল.ডাটাএ্যাক্সেস.ডিল v4.121.2.0 এর সাথে। 2- হোম ইনস্টলেশন (32 এবং 64 বিট সংস্করণ) সহ। 32-বিট সংস্করণ কর্মী, 64-বিট সংস্করণটি হয়নি।

আমার ক্ষেত্রে (চেষ্টা করার 2 দিন পরে) আমি দেখতে পেয়েছি যে ৪-বিট-হোম সংস্করণে সমস্যাটির অনুমতি ছিল। সেই সংস্করণে থাকা অনেকগুলি ডিরেক্টরিতে একচেটিয়াভাবে অনুমতিগুলি ওভাররাইডের অনুমতি পেয়েছিল যেখানে "প্রমাণীকরণকারী ব্যবহারকারীদের" ভূমিকাটিতে "পঠন" অ্যাক্সেস নেই, যা পিতামাতার ডিরেক্টরিতে ডিফল্টরূপে সেট করা আছে। এই উপ-ডিরেক্টরিগুলির মধ্যে "বিন", "নেটওয়ার্ক / অ্যাডমিন", "এনএলএস", "ওরেকোর", "আরডিবিএমএস" এবং সম্ভবত অন্যান্য ছিল। সিসিনটার্নালস থেকে "প্রসেস মনিটর" (প্রোমমন.এক্সি) ইউটিলিটিতে "অ্যাক্সেস ডেনডেড" ফলাফলটি ফিল্টার করে আমি তাদের খুঁজে পেয়েছি। অনুমতিগুলি একবার অভিভাবক ডিরেক্টরি থেকে সেই শিশুদের সাব-ডাইরেক্টরিগুলিতে উত্তরাধিকার সূত্রে প্রাপ্ত হয়ে সমস্ত কিছু কাজ করা শুরু করে।

আমি পুরো ওরাকল হোমটিতে অনুমতিগুলি কী ওভাররাইড করব তা তাই আমি একবারে তাদের জন্য একটি ডিরেক্টরি করেছিলাম, তবে আমার ধারণা আপনি যদি এতটা সুরক্ষা নিয়ে চিন্তা না করেন তবে আপনি এটি পুরো সম্পর্কিত ওরাকল হোম ডিরেক্টরিতে পুনরায় সেট করতে পারেন।


-1
  • একটি -৪-বিট মেশিনে, সি: \ উইন্ডোজ \ সিএসডাব্লু 6464৪ থেকে "অ্যাপ্লিকেশনটির জন্য বিন ডিরেক্টরিতে" msvcr71.dll "অনুলিপি করুন।
  • একটি 32-বিট মেশিনে, আপনার অ্যাপ্লিকেশনটির জন্য বিন ডিরেক্টরিতে সি: \ উইন্ডোজ \ সিস্টেম 32 থেকে "msvcr71.dll" অনুলিপি করুন।

http://randomdevtips.blogspot.com/2012/06/provider-is-not-compatible-with-version.html


-3

এখানে প্রচুর তাত্ত্বিক উত্তর রয়েছে, তবে এখানে কোড সহ একটি কার্যকরী উদাহরণ এসেছে যা আপনি অনুলিপি করে আটকান এবং তাৎক্ষণিকভাবে পরীক্ষা করতে পারেন:

  1. আমি ওরাকল এক্সপ্রেস ডাটাবেসের ইনস্টল OracleXE112 যা ইতিমধ্যে কিছু আগে থেকেই ইনস্টল করা ডেমো টেবিল দিয়ে আসে।
  2. আপনি যখন ইনস্টলারটি শুরু করেন তখন আপনাকে একটি পাসওয়ার্ডের জন্য জিজ্ঞাসা করা হয় । আমি পাসওয়ার্ড হিসাবে "xxx" প্রবেশ করলাম। (উত্পাদন ব্যবহৃত হয় না)
  3. আমার সার্ভারটি 192.168.1.158 মেশিনে চলে
  4. সার্ভারে আপনাকে অবশ্যই উইন্ডোজ ফায়ারওয়ালে TNSLSNR.exe প্রক্রিয়াটির জন্য স্পষ্টভাবে অ্যাক্সেসের অনুমতি দিতে হবে । এই প্রক্রিয়াটি 1521 পোর্টে শোনে। আপনি নীচের কোড থেকে একটি সময়সীমা ত্রুটি পেতে থাকলে আপনার ফায়ারওয়ালটি পরীক্ষা করে দেখুন।
  5. বিকল্প এ: সি # (.NET2 বা .NET4) এর জন্য আপনি ODAC11 ডাউনলোড করতে পারেন , যেখান থেকে আপনাকে আপনার প্রকল্পে Oracle.DataAccess.dll যুক্ত করতে হবে। অতিরিক্তভাবে এই ডিএলএল উপর নির্ভর করে: OraOps11w.dll, oci.dll, oraociei11.dll (130MB!), Msvcr80.dll। এই ডিএলএল EXE এর হিসাবে একই ডিরেক্টরির মধ্যে হতে হবে বা আপনি ডিএলএল পাথ নির্দিষ্ট করতে হবে: HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\ODP.NET\4.112.4.0\DllPath। Bit৪ বিট মেশিনে অতিরিক্ত লিখুনHKLM\SOFTWARE\Wow6432Node\Oracle\...
  6. বিকল্প বি: আপনি যদি ওডিএসি 12 ডাউনলোড করে থাকেন তবে আপনার ওরেकल.ডাটাএ্যাক্সেস.ডিল, ওরাওএসপি 12 ডাব্লু.ডিএল, oci.dll, ওরাওসিআই 12.ডিএল (160 এমবি!), Oraons.dll, msvcr100.dll দরকার d রেজিস্ট্রি পথHKEY_LOCAL_MACHINE\SOFTWARE\Oracle\ODP.NET\4.121.2.0\DllPath
  7. বিকল্প সি: আপনি যদি 100 এমবি এর বেশি বিশাল ডিএলএল না চান তবে আপনার ODP.NET_Managed12.xxxxxxxx.zip ডাউনলোড করতে হবে যেখানে আপনি খুঁজে পান Oracle.ManagedDataAccess.dllযা কেবল 4 এমবি এবং খাঁটি পরিচালিত ডিএলএল যা 32 বিট এবং 64 বিট প্রক্রিয়াতে কাজ করে পাশাপাশি এবং অন্য কোনও ডিএলএল উপর নির্ভর করে এবং কোনও রেজিস্ট্রি প্রবেশের প্রয়োজন হয় না।
  8. নিম্নলিখিত সি # কোডটি সার্ভার সাইডে কোনও কনফিগারেশন ছাড়াই আমার জন্য কাজ করে (কেবলমাত্র ডিফল্ট ইনস্টলেশন):
Oracle.DataAccess.Client ব্যবহার করে;
অথবা
Oracle.ManagedDataAccess.Client ব্যবহার করে;

....

স্ট্রিং ওরেডবি = "ডেটা উত্স = (বর্ণিত =")
    + "(অ্যাড্রেস_লিস্ট = (অ্যাড্রেসিং = (প্রটোকল = টিসিপি)) (HOST = 192.168.1.158) (পোর্ট = 1521))"
    + "(CONNECT_DATA = (সার্ভার = উত্সাহিত)))"
    + "ব্যবহারকারী আইডি = সিস্টেম; পাসওয়ার্ড = এক্সএক্সএক্স;";

(ওরাকল সংযোগ সংযোগ = নতুন ওরাকল সংযোগ (ওরেডবি)) ব্যবহার করে 
{
    conn.Open ();
    (ওরাকলকম্যান্ড সিএমডি = নতুন ওরাকলকম্যান্ড ()) ব্যবহার করে
    {
        cmd.Connication = সং;
        সেমিডি.কম্যান্ডটেক্সট = "ডিবিএ_ডাটা_ফাইলেস থেকে টেবিলস্প্যাক নির্বাচন করুন";

        (ওরাকলডেটাআরডার ডাঃ = ​​সেমি। এক্সেক্সিউটআরডার ()) ব্যবহার করে
        {
            যখন (dr.Rad ())
            {
                listBox.Items.Add (ড [ "TABLESPACE_NAME"]);
            }
        }
    }
}

আপনার যখন কেবল একটি চলমান ক্লায়েন্টের প্রয়োজন তখন পুরো ওরাকল ডাটাবেস সার্ভারটি ইনস্টল করার জন্য মোটামুটি ওভারকিল।
ওয়ার্নফ্রিড ডমসচিট

আপনি উত্তর যাইহোক দরিদ্র। অ্যাপলিকেশন ডিরেক্টরিতে কোনও ওরাকল ডিএল "এর অনুলিপি করার দরকার নেই কারণ ডিফল্ট ইনস্টলেশন অনুসারে আপনি সেগুলি ‰ PATH% এর মাধ্যমে খুঁজে পান (যদি না আপনি নিজের দ্বারা এটি পরিবর্তন করেন তবে) রেজিস্ট্রি ইঙ্গিতটি কেবলমাত্র সংস্করণ 4.x এর জন্য প্রযোজ্য এবং কেবলমাত্র এটির জন্য কাজ করে । 32-বিট ওরাকল ক্লায়েন্ট তবে mismatchrs 32 বিট বনাম 64 বিট এই প্রশ্নের প্রধান বিষয়।
Wernfried Domscheit

আপনি মন্তব্যটি দেখান যে আপনি আমার উত্তরটি পড়েন নি। যদি আমি একটি অ্যাপ্লিকেশন লিখতে চাই যা ওরাকল সার্ভারের সাথে যোগাযোগ করে তবে ওরাকল থেকে কিছু ইনস্টল করার দরকার নেই। আমি কেবল উল্লিখিত ডিএলএল ব্যবহার করি এবং এটি আমার অ্যাপ্লিকেশন দিয়ে বিতরণ করি। সুতরাং শেষ ব্যবহারকারীর মেশিনে PATH ভেরিয়েবলের কিছুই থাকবে না। PATH ভেরিয়েবল ব্যবহার করার মাধ্যমে (যা 1980 থেকে পুরানো ডস যুগ থেকে আসে) আধুনিক সফ্টওয়্যারটিতে অত্যন্ত অবমূল্যায়ন করা হয়। আমার উত্তরটি অপশন সিটির প্রস্তাব দেয় যা কোনও রেজিস্ট্রি পাথের প্রয়োজন হয় না এবং 32 বা 64 বিটের উপর নির্ভর করে না। আমি কেবলমাত্র সম্পূর্ণতার জন্য বিকল্প A এবং B উল্লেখ করেছি।
এলময়ে

আমি মনে করি উপযুক্ত% PATH% সেট করা ছাড়াই আপনার উইন্ডোজ মোটেও কাজ করবে না - এমনকি সংস্করণ 10-এও I আমি আমার উত্তরে উল্লেখ করেছিলাম যে আপনার অ্যাপ্লিকেশনটির সাথে কোনও ওরাকল ডিএল ম্যানুয়ালি অনুলিপি করা স্মার্ট নয়। আমি এই ডিলের উত্স কোডটি জানি না তবে আপনার গ্রাহকের পক্ষে আরও নির্ভরতা থাকতে পারে যা আপনি দেখতে পাচ্ছেন না, উদাহরণস্বরূপ ভাষা সেটিংস, অক্ষর সেট, সময় অঞ্চল ইত্যাদি দ্বারা ট্রিগার করা যখন আমি তখন একটি ট্রেস তৈরি করি Oracle.DataAccess.dllতখন মোট 35 টি ওরাকল ডিএলএল এর প্রোগ্রাম লোড! ওরাকল ক্লায়েন্টের একটি সাধারণ ইনস্টলেশন করা আরও ভাল - যদি না আপনি অবশ্যই ODP.NET পরিচালিত ড্রাইভার ব্যবহার করেন।
ওয়ার্নফ্রিড ডমসইট

1
আমি আমার উদ্বেগগুলির কথা উল্লেখ করেছি বলে মনে করি: (1) ডাটাবেস ইনস্টল করা অকেজো, অর্থাত্ ওভারকিল। (২) অপশন এ এবং বি কেবল কিছু শর্তের মধ্যে কাজ করে, উদাহরণস্বরূপ এটি রেজিস্ট্রি থেকে কোনও এনএলএস-সেটিংস পড়ে না (যার জন্য আপনার ফাইল প্রয়োজন oracle.key)। সামঞ্জস্যের জন্য আপনাকে ছোটখাটো সংস্করণও আমলে নিতে হবে। উদাহরণস্বরূপ 2.112.4.0 সংস্করণে Oracle.DataAccess, Version=2.112.2.0কাজ করে না OraOps11w.dll
ওয়ার্নফ্রিড ডমসচাইট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.