ORA-12505, TNS: dinleyici şu anda bağlantı tanımlayıcısında belirtilen SID'den haberdar değil

64 bit Windows 7 işletim sistemime Oracle 11g Express Edition Sürüm 2'yi yükledim ve JDBC programını yürütmeye çalıştım, ardından aşağıdaki hatayı aldım:

 java.sql.SQLException: Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:412) at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:531) at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:221) at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:503) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at com.jlcindia.jdbc.JDBCUtil.geOracleConnection(JDBCUtil.java:28) at Lab3O.main(Lab3O.java:15) Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor at oracle.net.ns.NSProtocol.connect(NSProtocol.java:385) at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1042) at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:301) ... 8 more 
103
12 авг. Öğrenci 12 Ağustos tarafından verilen . 2013-08-12 19:54 '13, 19:54 2013-08-12 19:54
@ 22 cevap

Bu sorunu jdbc satırını düzelterek düzelttim.

Örneğin, doğru jdbc dize olmalı ...

 jdbc:oracle:thin:@myserver:1521:XE 

(Not: 1521 ile XE arasında / olmalıdır)

Bu kötü jdbc satırı da bana ORA-12505 hatası veriyor.

114
11 дек. Cevap Wade H 11 Aralık tarafından verildi. 2013-12-11 03:48 '13, 3:48 2013-12-11 03:48

Bu soruna neden olabilecek birkaç şey var, ancak JDBC ile çalışmaya başlamadan önce, SQL * Plus kullanarak veritabanına bağlanabildiğinizden emin olmalısınız. SQL * Plus'a aşina değilseniz, bu uzun zamandır Oracle'ın standart bir parçası olan ve Oracle XE'ye dahil olan Oracle veritabanlarına bağlanmak için kullanılan bir komut satırı aracıdır.

JDBC kullanarak bir Oracle veritabanına bağlanırken, doğrudan veritabanına bağlanmıyorsunuzdur. Bunun yerine, sizi veritabanına bağlayan TNS dinleyicisine bağlanırsınız. Hata ORA-12505 , dinleyicinin arttığını ve buna bağlanabileceğinizi, ancak bu veritabanını bilmediğinden sizi veritabanına bağlayamadığını gösterir. Bunun iki nedeni var:

  • veritabanı çalışmıyor
  • Örneğin, veritabanı dinleyiciye kayıtlı değildi. çünkü veritabanı dinleyicinin önünde çalışıyordu. (Veritabanı başlatıldığında, dinlenirken, zaten çalışıyorsa kaydedilir. Dinleyici başlatılmazsa, veritabanı kaydedilmez ve dinleyici başlatılırsa, içinde kaydolabilecek veritabanları aramaz.)

ORA-12505, dinleyicinin bu veritabanını bildiği anlamına gelir; ancak dinleyici, veritabanından olduğu konusunda veritabanından bir bildirim almadı. (Yanlış SID kullanarak yanlış veritabanına bağlanmayı denediyseniz, "TNS: Belirtilen bağlantı tanımlayıcısı çözülemedi" ORA-12154 hatasını alırsınız.)

Hizmetler ek bileşeninde hangi Oracle hizmetleri çalışıyor? (Kontrol panelinden> "Yönetim"> "Hizmetler" veya sadece "Başlat"> "Çalıştır"> services.msc .) Çalıştırmak için OracleServiceXE ve OracleXETNSListener hizmetlerine ihtiyacınız var.

Hizmetler çalışıyorsa, veritabanına SQL * Plus'ta komut satırında aşağıdaki komutlardan birini kullanarak bağlanabilir misiniz? (Onları Oracle XE yüklü bir makinede çalıştırdığınızı varsayıyorum.)

  sqlplus sistem / sistem şifresi @XE 
  sqlplus sistem / sistem şifresi 
border=0
  sqlplus / sysdba olarak 

(Oracle XE kurulumu sırasında system-password SYS ve SYSTEM kullanıcıları için belirlediğiniz system-password değiştirin.)

Bu üçünün ilki TNS dinleyicisiyle bağlanır ve ikinci iki dinleyiciden geçmeden doğrudan veritabanına bağlanır ve yalnızca veritabanıyla aynı bilgisayardaysanız çalışır. İlk başarısız olursa, ancak diğer ikisi başarılı olursa, JDBC bağlantıları da başarısız olur. Eğer öyleyse, diğer ikisinden birini kullanarak veritabanına bağlanın ve ALTER SYSTEM REGISTER başlatın. Sonra SQL * Plus'tan çıkın ve ilk formu tekrar deneyin.

Üçüncüsü çalışmıyorsa ve ikincisi çalışıyorsa, hesabınızı ora_dba grubuna ekleyin. Bunu Denetim Masası> Bilgisayar Yönetimi> Yerel Kullanıcılar ve Gruplar'da yapın.

Form bağlantılarını alır almaz

  sqlplus sistem / sistem şifresi @XE 

JDBC üzerinden Oracle XE'ye bağlanabilmelisiniz. (Bu arada, bize veritabanına bağlanmak için kullandığınız JDBC kodunu söylemediniz, ancak bunun büyük olasılıkla doğru olduğunu varsayacağım, bağlantı dizesinin bazı kısımları yanlışsa başka hatalar olacaktır.)

72
13 авг. Luke Woodward yanıtladı 13 Ağu 2013-08-13 00:19 '13, 0:19 2013-08-13 00:19

Ben de aynı hatayı yaptım, ama denediğimde üçü de başarısız oldu. Yukarıdaki üç geçilmezse. LSNRCTL'nin durumunu kontrol edin, servisin (benim durumumda XE) eksik olduğunu tespit ederseniz, bu sqlplus /nolog conn system ... password ... connected. alter system register;
exit
lsnrctl stat
...
olanı deneyin sqlplus /nolog conn system ... password ... connected. alter system register;
exit
lsnrctl stat
...
sqlplus /nolog conn system ... password ... connected. alter system register;
exit
lsnrctl stat
...

Şimdi servisi görebilirsiniz Bu sqlplus /nolog
conn system
... password ... connected.
alter system set local_listener = '(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))' scope = both;
... system altered ...
alter system register;
exit
lsnrctl stat
sqlplus /nolog
conn system
... password ... connected.
alter system set local_listener = '(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))' scope = both;
... system altered ...
alter system register;
exit
lsnrctl stat

Bu işe yaramalı ...

26
28 окт. Raj tarafından verilen cevap 28 Oct 2013-10-28 11:41 '13 11:41 2013-10-28 11:41

Bu hatayı aldığınızda "ORA-12505, TNS: Dinleyici şu anda bağlantı tanımlayıcısında belirtilen SID'den haberdar değil"

Çözüm: hizmetleri açın ve OracleServiceXE çalıştırın, ardından bağlanmayı deneyin ...

21
21 окт. Cevap C Nageswara Reddy 21 ekim tarafından verildi . 2013-10-21 09:35 '13 9: 35'te 2013-10-21 09:35

Bu istisna için bazı sebepler buldum. Onlar

1) Varsayılan XE veritabanının adı. URL " jdbc: oracle: thin: @localhost: 1521: XE " olacağından .

2) OracleServiceXE, OracleXETNSListener'ın çalıştığından emin olun. Denetim Masası \ Tüm Denetim Masası Öğeleri \ Yönetim \ Hizmetler konumunda bulunur.

10
06 авг. Tarafından cevap rajeesh 06 Ağu. 2014-08-06 14:58 '14, 14:58 2014-08-06 14:58

JDBC kodunu düzelterek bu sorunu çözdüm.

Doğru jdbc dize olmalı ...

 conection = DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:xe","system","ishantyagi"); 

Ama kullandığım JDBC dizisi ...

 conection = DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:orcl","system","ishantyagi"); 

Bu nedenle, SID adı yanlış olduğundan, xe yerine orcl belirtme hatası bu hatayı gösterdi.

7
11 сент. Cevap javabeginner tarafından 11 Eyl 2014-09-11 14:43 14, 14:43 2014-09-11 14:43

Aşağıdaki kodu kullandığımda sorunum çözüldü:

 Class.forName("oracle.jdbc.driver.OracleDriver"); Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@IPAddress:1521/servicename","userName","Password"); 
6
09 июля '15 в 9:44 2015-07-09 09:44 Cevap Rasheed Puttur tarafından 09 '15 Temmuz 09:44 tarihinde verilmektedir 2015-07-09 09:44

Oracle: Hizmetin adının ince bir stilde sözdizimi

İnce stil servis adları yalnızca JDBC İnce sürücü tarafından desteklenir. sözdizimi:

@ // ana bilgisayar adı: port_number / service_name

http://docs.oracle.com/cd/B28359_01/java.111/b31224/urls.htm#BEIDHCBA

4
30 янв. Cevap jeton tarafından 30 Ocak'ta verilir 2015-01-30 23:35 '15 23:35 2015-01-30 23:35

Ben de buraya aynı problemle geldim. Jus'u Windows 8'e (64-bit) Oracle 12c ile yükledim, ancak o zamandan beri komut satırında "TNSPING xe" kullanarak etkinleştirdim ... Bağlantı kurulmadıysa veya ad bulunmadıysa, veritabanı adını deneyin. benim durumumda, yine "orcl" ... "TNSPING orcl" idi ve başarılı bir şekilde tamamlanırsa, bu durumda SID'yi "orcl" olarak değiştirmelisiniz (veya hangi veritabanı adı kullanılıyorsa) ...

4
03 нояб. Cevap Jose Rego 03 Kas. 2013-11-03 03:45 '13 3 : 45'te 2013-11-03 03:45

Yaygın olarak tartıştığını görmediğim bir olasılık, ana makinenin kendisinde ana bilgisayar adının çözümlenmesiyle ilgili bir sorun olabileceğidir. / Etc / hosts dosyasında $ (hostname) girdisi yoksa, Oracle dinleyicisinin kafası karışır ve uyuşmaz.

Bu benim sorunumdu ve ana bilgisayar adı ve IP adresini / etc / hosts dosyasına eklemek sorunu çözdü.

3
15 апр. Cevap 15 Nis tarihinde BillT tarafından yapılmıştır . 2014-04-15 21:35 '14, 09:35 2014-04-15 21:35

Benzer bir hata ile karşı karşıya kalan, yukarıdaki çözümlerin hiçbiri yardımcı olmadı. Listner.ora dosyasında bir sorun vardı. Yanlışlıkla, aşağıda gösterildiği gibi SID_LIST bir SID SID_LIST (yıldızlar arasındaki bölüm *).

  SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server) (PROGRAM = extproc) ) (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server) (PROGRAM = extproc) ) ) *(SID_DESC = (SID_NAME = XE) (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server) )* LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) ) DEFAULT_SERVICE_LISTENER = (XE) 

Aşağıda açıklanan hata düzeltildi:

 SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = XE) (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server) ) (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server) (PROGRAM = extproc) ) (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server) (PROGRAM = extproc) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) ) DEFAULT_SERVICE_LISTENER = (XE) 

Durduruldu ve veritabanı 2019

28 апр. Cevap 28 Nisan'da Nirmal Mangal tarafından verildi. 2016-04-28 00:14 '16, 0:14 2016-04-28 00:14

Ben de aynı problemle karşılaştım. VMware kullanarak Oracle Express 10g sürümünü Windows XP'ye yükledim ve iyi çalışıyor. 10g tarafından sağlanan SQL yardımcı programında SQL sorgularını yazdırmak çok elverişli olmadığı ve SQL geliştiricisi ile çalışmaya başladığımdan beri XP'de 32 bit bir SQL geliştiricisi kurdum ve veritabanımın SID'sine "XE" bağlanmaya çalıştım. Ancak bağlantı hatasıyla başarısız oldu - ORA-12505 TNS dinleyicisi, şu anda bağlantı tanımlayıcısında belirtilen SID'den haberdar değil. Bu sorunun nasıl ortaya çıktığı konusunda denizdeydim, çünkü SQL hizmet programı ile iyi çalışıyor ve aynı şeyi kullanarak birkaç Informatica eşlemesi oluşturdum. Orada bu materyali çok araştırdım ve halka açık forumlarda lsnrctl statüsüne cevap verdikten sonra bana önerilerde bulundum, ancak boşuna. Ancak bu sabah tekrar yeni bir bağlantı kurmaya çalıştım ve Voila sorunsuz çalıştı. Sanırım bazen dinleyicinin bir veritabanına veya başka bir şeye bağlanmadan önce dinleyebileceği birkaç mesaj okuduktan sonra (burada yeni olduğum için kaba bağlantım için beni bağışla), ancak makineyi yeniden başlatıp tekrar kontrol etmenizi öneririm.

2
22 окт. 22 Ekim tarihinde user2905345 tarafından verilen cevap 2013-10-22 05:42 '13 5:42 2013-10-22 05:42

Aynı sorunu yaşadım, bu sorunu çözmek için önce dinleyicimi netca kullanarak yeniden yapılandırdım, daha sonra ORCL olan eski veritabanımı dbca , dbca kullanarak ve sonra tekrar dbca kullanarak yeni bir veritabanı oluşturdum

2
25 дек. Cevap 25 Aralık'ta Teknokrat tarafından verildi . 2013-12-25 18:23 '13, 18:23 2013-12-25 18:23

Aynı sorunu yaşadım ve OracleServiceXE hizmetini yeniden başlatmaya karar verdim. Services.msc'ye gidin ve ardından "OracleServiceXE" UP hizmetinin çalıştığını kontrol edin.

2
09 апр. Cevap Vijay Thayalan 09 nisan tarafından verildi . 2015-04-09 13:13 '15 13:13 2015-04-09 13:13

Ana makinede tnsping ve örnek adını çalıştırarak doğrulayın. Bu, size tns bildirimini ve ana bilgisayar adının farklı olduğu ve her zaman uyuşmadığı her zaman verir.

Ben de sorunumu çözüyorum

Bir Unix makinesinde $ tnsping (Enter)

Bu, bana ana bilgisayar adının farklı olduğunu bulduğum tns'in tam bir tanımını verir .. :)

1
16 сент. Cevap 16 Eylül tarihinde Abhishek Banik tarafından verilmiştir. 2014-09-16 11:03 '14, 11:03 2014-09-16 11:03

Birkaç cmd ile uğraştıktan sonra aniden aynı sorunu ortaya çıktı. Kapat ORACLE SERVICE XE çalışmayı durdurdu. Yönetimsel araçlardan yeniden başlatmak için 2 saniye sürdü. TNX!

1
01 дек. Cevap Brian Mk 01 Dec. 2014-12-01 21:45 '14, 21:45 2014-12-01 21:45

Lütfen start->run->services.msc adresine giderek start->run->services.msc hem OracleServiceXE hem de OracleXETNSListener durumunu kontrol edin.

Benim durumumda, yalnızca OracleXETNSListener başlatıldı, ancak right clicking -> start OracleXETNSListener right clicking -> start ve benim için çalıştığı bağlantıyı kontrol ettiğimde OracleServiceXE başlatılmadı

1
10 авг. Cevap user5211481 10 Ağustos tarafından verilir . 2015-08-10 17:09 '15 5:09 pm, 2015-08-10 17:09

SQL Workbench'te de benzer bir problem yaşadım.

URL:

: JDBC Oracle: ince: @ 111.111.111.111: 1111: x

çalışmıyor

URL:

: JDBC Oracle: İnce: @ 111.111.111.111: 1111: AsDB

çalışması.

Bu benim özel durumumda bana yardımcı olacak. Farklı çözümlerle birlikte birçok neden olabileceğinden korkuyorum.

1
08 авг. Cevap verilen cevap - Stád.cz 08 aug. 2016-08-08 11:03 '16, 11:03 2016-08-08 11:03

TNSNAMES.ora dosyamda " SID " yi " SERVICE_NAME " olarak değiştirerek bu sorunu düzelttim.

Veritabanınızın SID mi yoksa SERVICE_NAME mi istediğini kontrol edin.

selamlar

0
04 мая '16 в 5:01 2016-05-04 05:01 Cevap Akshay Lokur tarafından verildi 04 Mayıs '16, 5:01 2016-05-04 05:01

Benim durumumda işe yaramadı, nihayet TNS'in dinleyicisini ve dinleyicisini yeniden başlattım ve her şey çalıştı. 2 gün savaştım.

0
28 апр. Cevap Amarjeet 28 nisan verildi . 2016-04-28 12:56 '16, 12:56, 2016-04-28 12:56

Oracle Express Edition kullanıyorsanız, bu URL’ye sahip olmalısınız

JDBC: oracle: thin: @localhost: bin beş yüz yirmi bir: x

Pom.xml'deki Liquibase config eklentisi ile benzer bir problem yaşadım. Ve yapılandırmayı değiştirdim:

 `<configuration> <driver>oracle.jdbc.OracleDriver</driver> <url>jdbc:oracle:thin:@localhost:1521:xe</url> <defaultSchemaName></defaultSchemaName> <username>****</username> <password>****</password> </configuration>` 
0
20 окт. Paul Chechegov 20 Ekici tarafından verilen cevap 2017-10-20 15:20 '17, 15:20 2017-10-20 15:20

Benzer bir problem vardı. Sorun aniden oldu - yük dengeleme veritabanı bağlantı URL’si var, ancak jdbc bağlantılarında doğrudan bir db'ye işaret ettim.

Dengeli bir db-url yüklemek için değiştirildi ve çalıştı.

0
09 июня '15 в 19:39 2015-06-09 19:39 Cevap Kisanagaram tarafından 09 Haziran 15 'te 19:39, 2015-06-09 19:39 tarihinde verilir.

tags ya da Soru Sor ile ilgili diğer sorular