ORA-12505, TNS:listener ei tällä hetkellä tiedä connect-kuvaajassa annettua SID:tä.

Olen asentanut Oracle 11g Express Edition Release 2:n 64-bittiseen Windows 7 -käyttöjärjestelmääni ja yrittänyt suorittaa JDBC-ohjelman, mutta sitten sain seuraavan virheilmoituksen:

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

Ongelman voi aiheuttaa muutama asia, mutta ennen kuin aloitat JDBC:n käytön, sinun on varmistettava, että voit muodostaa yhteyden tietokantaan SQLPlus-ohjelman avulla. Jos SQLPlus ei ole sinulle tuttu, se on komentorivityökalu Oracle-tietokantoihin liittämistä varten, joka on ollut Oraclen vakiovaruste jo pitkään, ja se sisältyy Oracle XE:hen.

Kun muodostat yhteyden Oracle-tietokantaan JDBC:n avulla, et muodosta yhteyttä suoraan tietokantaan. Sen sijaan muodostat yhteyden TNS-kuuntelijaan, joka muodostaa yhteyden tietokantaan. Virhe ORA-12505 tarkoittaa, että kuuntelija oli toiminnassa ja voit muodostaa siihen yhteyden, mutta se ei voinut muodostaa yhteyttä tietokantaan, koska se ei tiedä, että tietokanta on toiminnassa. Tähän on kaksi syytä:

  • Tietokantaa ei ole käynnistetty,
  • tietokanta ei ole rekisteröitynyt kuuntelijalle esimerkiksi siksi, että tietokanta käynnistettiin ennen kuuntelijaa. (Kun tietokanta käynnistyy, se rekisteröityy kuuntelijalle, jos se on jo käynnissä. Jos kuuntelija ei ole käynnissä, tietokanta ei rekisteröi itseään, ja jos kuuntelija käynnistyy, se ei etsi tietokantoja, jotka voisivat rekisteröityä siihen.)

ORA-12505 tarkoittaa, että kuuntelija tietää kyseisestä tietokannasta, mutta kuuntelija ei ole saanut tietokannalta ilmoitusta siitä, että tietokanta on toiminnassa. (Jos yrittäisit muodostaa yhteyden väärään tietokantaan käyttämällä väärää SID-tunnusta, saisit ORA-12154-virheen "TNS: can't resolve the connect identifier specified").

Mitä Oracle-palveluja on käynnissä Palvelut-laajennuksessa? (Avaa tämä Ohjauspaneeli > Hallintatyökalut > Palvelut tai vain Käynnistä > Suorita > services.msc). Palvelujen OracleServiceXE ja OracleXETNSListener on oltava käynnissä.

Jos molemmat palvelut on käynnistetty, voitko muodostaa yhteyden tietokantaan SQL*Plus-ohjelmassa käyttämällä jotain seuraavista komentorivin komennoista? (Oletan, että suoritat nämä komennot koneella, johon olet asentanut Oracle XE:n.)

sqlplus system/system-password@XE
sqlplus system/system-password
sqlplus / as sysdba

(Korvaa system-password salasanalla, jonka asetit SYS- ja SYSTEM-käyttäjille Oracle XE:n asennuksen aikana).

Ensimmäinen näistä kolmesta muodostaa yhteyden TNS-kuuntelijaan, mutta kaksi jälkimmäistä muodostavat yhteyden suoraan tietokantaan ilman kuuntelijaa, ja ne toimivat vain, jos olet samalla koneella kuin tietokanta. Jos ensimmäinen epäonnistuu, mutta kaksi muuta onnistuu, myös JDBC-yhteydet epäonnistuvat. Jos näin käy, muodosta yhteys tietokantaan jommallakummalla muulla tavalla ja suorita ALTER SYSTEM REGISTER. Poistu sitten SQL*Plus-ohjelmasta ja yritä ensimmäistä lomaketta uudelleen.

Jos kolmas epäonnistuu, mutta toinen toimii, lisää käyttäjätilisi ora_dba-ryhmään. Tee tämä kohdassa Ohjauspaneeli > Tietokoneiden hallinta > Paikalliset käyttäjät ja ryhmät.

Kun saat yhteydet lomakkeelle

sqlplus system/system-password@XE

toimimaan, sinun pitäisi pystyä muodostamaan yhteys Oracle XE:hen JDBC:n kautta. (Et muuten ole näyttänyt meille JDBC-koodia, jota käytät tietokantaan yhdistämiseen, mutta epäilen, että se on todennäköisesti oikein; olisi useita muita virheitä, jos osa yhteysmerkkijonosta olisi väärä).

Kommentit (3)

Kun saat tämän virheen "ORA-12505, TNS:listener does not currently know of SID given in connect descriptor"

Ratkaisu: Avaa Palvelut ja käynnistä OracleServiceXE, jonka jälkeen yritä muodostaa yhteys....

Kommentit (2)

Minullakin oli sama ongelma. Olin asentanut Oracle Express edition 10g:n Windows XP -käyttöjärjestelmään VMwaren avulla, ja se toimi hyvin. Koska SQL-kyselyjen kirjoittaminen 10g:n tarjoamassa SQL-apuohjelmassa oli hyvin hankalaa ja koska olin tottunut työskentelemään SQL Developer -ohjelmalla, asensin 32-bittisen SQL Developer -ohjelman XP:hen ja yritin muodostaa yhteyden DB SID "XE" -tietokantaani. Yhteys epäonnistui kuitenkin virheellä ORA-12505 TNS-kuuntelija ei tällä hetkellä tiedä connect descriptorissa annettua SID-tunnusta. Olin ymmälläni siitä, miten tämä ongelma ilmeni, koska SQL-apuohjelma toimi hyvin ja olin myös luonut muutaman Informatica-kuvioinnin samaa käyttäen. En selata paljon tätä tavaraa sinne tänne ja soveltaa ehdotuksia tarjotaan minulle jälkeen pinging tilan "lsnrctl" julkisilla foorumeilla, mutta turhaan. Tänä aamuna yritin kuitenkin luoda uuden yhteyden uudelleen, ja Voila, se toimi ongelmitta. Arvaan luettuani muutaman viestin, että joskus kuuntelija kuuntelee ennen kuin tietokanta muodostaa yhteyden tai jotain (anteeksi karkea viittaukseni, koska olen aloittelija täällä), mutta ehdotan, että vain käynnistät koneen uudelleen ja tarkistat sen uudelleen.

Kommentit (0)