Aşağıdaki hatayı yaşadığımız yerel olarak çalışan bir uygulamamız var:
ORA-12514: TNS:listener şu anda talep edilen hizmeti bilmiyor bağlantı tanımlayıcısında
Bağlantıyı TNSPing
kullanarak test ettim, bu da doğru bir şekilde çözüldü ve
Bağlanmayı denemek için SQLPlus'ı denedim, bu da yukarıdaki ile aynı hatayla başarısız oldu. SQLPlus
için bu sözdizimini kullandım:
sqlplus username/password@addressname[or host name]
Bunu doğruladık:
Bu ortamda yapılan herhangi bir değişiklikten haberimiz yok. Test edebileceğimiz başka bir şey var mı?
Bu sorun bende de vardı ve çözümü tnsnames.ora
dosyasında SERVICE_NAME
ifadesinin veritabanınızda geçerli bir hizmet adı olduğundan emin olmaktı. Geçerli hizmet adlarını bulmak için oracle'da aşağıdaki sorguyu kullanabilirsiniz:
select value from v$parameter where name='service_names'
Bir kez tnsnames.ora
olarak güncelledim:
TEST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = *<validhost>*)(PORT = *<validport>*))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = *<servicenamefromDB>*)
)
)
Sonra koştum:
sqlplus user@TEST
Başarılı! Dinleyici temel olarak size kullandığınız hizmet_adının DB'ye göre geçerli bir hizmet olmadığını söylüyor.
( Win7 istemci iş istasyonundan uzak DB'ye sqlplus çalıştırıyordum ve DBA'ları suçluyordum ;) )
Bu hata, bir uygulama her veritabanı etkileşimi için yeni bir bağlantı kurduğunda veya bağlantılar düzgün şekilde kapatılmadığında ortaya çıkabilir. Bunu izlemek ve onaylamak için ücretsiz araçlardan biri Oracle Sql developer'dır (DB oturumlarını izlemek için kullanabileceğiniz tek araç bu olmasa da).
aracı oracle sitesinden indirebilirsiniz Sql Developer
İşte oturumlarınızı nasıl izleyeceğinize dair bir ekran görüntüsü. (ORA-12514 hatasını gördüğünüz sırada uygulama kullanıcınız için çok sayıda oturum biriktiğini görürseniz, bu bağlantı havuzu sorununuz olabileceğinin iyi bir göstergesidir).