Oracle client software version 8.1.7 or greater. Hatası hakkında

Oracle yine iş başında. Oracle ile ilgilenenler birazcık bana kızabilir ama oldum olası sevemedim şunu 😀 Bir müşterimiz ile entegrasyon yaparken eski bir yazılımımız bağlantı hatası alıyordu. Hata “System.Data.OracleClient requires Oracle client software version 8.1.7 or greater.”  Türkçe Meali “System.Data.OracleClient, Oracle istemci version 8.1.7 veya daha sonraki sürümünü gerektirir.”

Daha öncesinde ORACLE tarafında aldığımız bir hatanın çözümü için bir yazı paylaşmıştım. C# ile geliştirilmiş olan bir yazılım üzerinde aldığımız hata idi. Yazıya buradan ulaşabilirsiniz..

Hatanın Türkçe karşılığı anlaşıldığı gibi Oracle Client nesnesinin versiyonun düşük ve eski olmasından kaynaklanıyordu. Bunun için aşağıdaki linkten ODAC’lardan yeni versiyonundan birisinin indirilip kurulum sonrası çözüldüğünü gördüm.

İndirmek biraz zahmetli. Çünkü hesap bilgileri vs. istiyor. Aynı zamanda Oracle sitesi bazen hata veriyor. Dikkat edin. Çıldırmanıza ve çılgın atmanıza sebebiyet verebilir. 🙂

https://www.oracle.com/database/technologies/dotnet-odacdev-downloads.html

Yukarıdaki linkten indirip istenirse sadece Oracle Client nesnesinin kurulması yeterli.

Okumaya devam et “Oracle client software version 8.1.7 or greater. Hatası hakkında”

C# Oracle Veritabanı Bağlantı Hatası ( TNS:listener was not given the SERVICE_NAME in CONNECT_DATA )

Bir entegrasyon projemizde gittik Oracle’a denk geldik. Onda da hata ile karşılaştık. Yanlış anlaşılmasın denk geldik işte 🙂 Oracle tarafı ile pek bir tecrübem olduğu söylenemez. Fakat Google gibi bir kaynak elimizin altındayken çözümü bulmamak ayıp olurdu.

Alınan hata aşağıdaki gibi bir hatadır.

System.Data.OracleClient.OracleException (0x80131938): ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA

konum: System.Data.OracleClient.OracleException.Check(OciErrorHandle errorHandle, Int32 rc)
konum: System.Data.OracleClient.OracleInternalConnection.OpenOnLocalTransaction(String userName, String password, String serverName, Boolean integratedSecurity, Boolean unicode, Boolean omitOracleConnectionName)
konum: System.Data.OracleClient.OracleInternalConnection..ctor(OracleConnectionString connectionOptions)
konum: System.Data.OracleClient.OracleConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
konum: System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
konum: System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
konum: System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
konum: System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
konum: System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
konum: System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
konum: System.Data.OracleClient.OracleConnection.Open()

Yukarıdaki gibi bir hata alıyorduk. Hatanın ana teması ise “TNS:listener was not given the SERVICE_NAME in CONNECT_DATA” artık bu ne demekse ( ORACLE ile uğraşanlar biliyorlardır diye tahmin ediyorum 🙂 )

Çözümümüz ise Program tarafında SQL Connection için yazılan string içerisine HOST kısmında aşağıdaki cümleciği yazmak oldu.

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=BAGLANTI_YAPILACAK_SERVER)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=opera)))

BAGLANTI_YAPILACAK_SERVER bilgisi bağlanacak olduğunuz server bilgisidir. localhost, Server’ın kendi hostname’i, IP Adresi gibi bilgiler olmaktadır.