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.