[oracle] ORA-12514 TNS: il listener non conosce al momento il servizio richiesto nel descrittore di connessione


Answers

So che questa è una vecchia domanda, ma ancora senza risposta. Mi ci è voluto un giorno di ricerche, ma ho trovato la soluzione più semplice, almeno nel mio caso (Oracle 11.2 su Windows 2008 R2) e volevo condividere.

L'errore, se esaminato direttamente, indica che il listener non riconosce il nome del servizio. Ma dove tiene i nomi dei servizi? In %ORACLE_HOME%\NETWORK\ADMIN\listener.ora

Il "SID_LIST" è proprio questo, un elenco di SID e nomi di servizio abbinati in un formato che è possibile copiare o cercare.

Ho aggiunto il problema Nome servizio, quindi nel pannello di controllo "Servizi" di Windows, ho eseguito un "riavvio" sul servizio listener Oracle. Ora va tutto bene.

Question

Abbiamo un'applicazione in esecuzione localmente in cui stiamo riscontrando il seguente errore:

ORA-12514: TNS: il listener non conosce al momento il servizio richiesto nel descrittore di connessione

Ho provato la connessione usando TNSPing che è stata risolta correttamente e ho provato SQLPlus a provare la connessione, che ha avuto esito negativo con lo stesso errore di cui sopra. Ho usato questa sintassi per SQLPlus :

sqlplus username/password@addressname[or host name]

Abbiamo verificato che:

  • il listener TNS sul server è in esecuzione.
  • L'Oracle stesso sul server è in esecuzione.

Non sappiamo di eventuali modifiche apportate a questo ambiente. Qualcos'altro che possiamo testare?




Ho ricevuto lo stesso errore perché il SID remoto specificato era sbagliato:

 > sqlplus $DATASOURCE_USERNAME/$DATASOURCE_PASSWORD@$DB_SERVER_URL/$REMOTE_SID 

Ho interrogato il database di sistema:

seleziona * da global_name;

e ho trovato il mio SID remoto ("XE").

Quindi potrei connettermi senza problemi.




ciò che ha funzionato per me è stato molto semplice, avevo solo bisogno di avviare manualmente il servizio nei "Servizi Windows" (services.msc in cmd trompt). il mio nome di servizio è: OracleServiceXXXXX.




Avvio di OracleServiceXXX da services.msc ha funzionato per me in Windows.




Verifica se il database è attivo. Accedere al server, impostare la variabile di ambiente ORACLE_SID sul SID del database ed eseguire SQL * Plus come connessione locale.




Nelle mie circostanze l'errore era dovuto al fatto che l'ascoltatore non aveva registrato il servizio di db. Ho risolto questo registrando i servizi. Esempio:

Il mio descrittore in tnsnames.ora :

LOCALDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = LOCALDB)
    )
  )

Quindi, procedo a registrare manualmente il servizio nel listener.ora :

SID_LIST_LISTENER =
    (SID_DESC =
      (GLOBAL_DBNAME = LOCALDB)
      (ORACLE_HOME = C:\Oracle\product\11.2.0\dbhome_1)
      (SID_NAME = LOCALDB)
    )
  )

Infine, riavvia l'ascoltatore con il comando:

> lsnrctl stop
> lsnrctl start

Fatto!




Ho anche affrontato lo stesso problema e ho trascorso 3 giorni a scavare. Ciò accade a causa dell'errata immissione del servizio TNS. Per prima cosa controlla se sei in grado di connettersi al database di standby dal database principale usando sql> sqlplus sys @ orastand come sysdba (orastand è il database di standby), se non sei in grado di connetterti allora è un problema con il servizio. Correggere la voce del nome del servizio nel file TNS alla fine principale. Controlla allo stesso modo nel database di standby, se è necessario apportare le modifiche anche qui. e Assicurarsi che il parmater log_archive_dest_2 abbia il nome di servizio corretto.




Ho risolto questo problema nel mio ambiente Linux aggiornando l'IP della mia macchina nel file / etc / hosts.

Puoi verificare il tuo IP di rete (inet end) con:

$ifconfig

Verifica se il tuo IP corrisponde al file / etc / hosts:

$cat /etc/hosts

Modifica il tuo file / etc / hosts, se presente:

$sudo gedit /etc/hosts

Ciao.




Ho finito di lavorare per risolvere questo problema.

  1. Ho impostato oracle_home nel prompt di cmd (fare clic con il pulsante destro del mouse su cmd.exe Esegui come amministratore di sistema). usato sotto il comando

    imposta oracle_home = "percorso alla casa dell'oracolo"

ho installato Oracle nella mia D: unità.

  1. E Vai a Tutti i programmi -> Oracle -ora home1 -> Strumenti di migrazione della configurazione Net Manager -> Listener -> seleziona Database Services dal menu a discesa -> Nome del database globale e SID entrambi sono impostati sullo stesso nel mio caso è ORCL, imposta la directory oracle_home. Fare clic su File e salvare la configurazione di rete.



Related