ORA-12154: TNS: il listener non è attualmente a conoscenza del servizio richiesto nel descrittore di connessione

Richiesta:
Problemi connessione oraSiSV9i. 

Di seguito il tnsnames.ora. 

SISV9I.dominio.IT =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(Host = oraSISV9I)(Port = 1521))
)(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = SISV9I)))

errore che ricevo dall'applicazione:
ORA-12514: TNS: il listener non è attualmente a conoscenza del servizio richiesto nel descrittore di connessione

1) Da una macchina server verifico che il ping funziona
tnsping oraSISV9i
TNS Ping Utility for Linux: Version 11.2.0.1.0 - Production on 24-JAN-2019 12:05:31
Copyright (c) 1997, 2009, Oracle.  All rights reserved.
Used parameter files:
/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/sqlnet.ora
Used HOSTNAME adapter to resolve the alias
Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTOCOL=TCP)
(HOST=xx.yyyy.zzz.n)(PORT=1521)))
OK (0 msec)


2) Provare da un client locale, inserendo nel tnsname la stringa di connessione fornita.

2.1) Attenzione a non avere due tnsnames. 
Da cmd con il comando sqlplus risalgo alla versione del client così da capire che il tnsname considerato è la versione corretta.
In generale è presente sotto questo path in locale:
D:\app\oracle\product\11.2.0\client_1\network\admin\tnsnames.ora
2.2) Collegarsi con SqlDeveloper e scegliere come “Database = SISV9I.dominio.IT” 

2.3) Se non funziona la connessione verificare anche da cmd che il tnsping funzioni correttamente.
C:\Users\Utente_locale>tnsping oraSISV9i
TNS Ping Utility for 32-bit Windows: Version 11.2.0.1.0 - Production on 24-GEN-2019 12:15:08
Copyright (c) 1997, 2010, Oracle. All rights reserved.
File di parametri utilizzati:
D:\app\oracle\product\11.2.0\client_1\network\admin\sqlnet.ora
╚ stato utilizzato l'adattatore EZCONNECT per risolvere l'alias
Tentativo di contattare (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTOCOL=TCP)
(HOST=xx.yyyy.zzz.n)(PORT=1521)))
OK (0 msec) 


Verifichiamo che il tnsnames.ora che abbiamo sul nostro server sia lo stesso

SISV9I.WORLD = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = oraSISV9I)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = SISV9I) ) )

Cambio solo l’alias “SISV9I.WORLD =” e quindi non ha importanza. 
Controllare invece il file sqlnet.ora
# SQLNET.ORA Network Configuration File: /u01/app/oracle/product/9.2.0/network/admin/sqlnet.ora # Generated by Oracle configuration tools. NAMES.DIRECTORY_PATH= (TNSNAMES) NAMES.DEFAULT_DOMAIN = world

Il problema è il domani world. Come si risolve? 
o metti ".WORLD" dopo l'alias come segue

SISV9I.dominio.IT.WORLD = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(Host = oraSISV9I)(Port = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = SISV9I) ) )
oppure inserisci il domain "world" nel file sqlnet.ora con la seguente stringa. 

NAMES.DEFAULT_DOMAIN = world


Se viene effettuata una connessione di tipo easy connect naming method

Metodo Easy Connect: usa la stringa di connessione tcp/ip
SQL> connect username/password@host[:port][/service_name]

E se riceviamo sempre il messaggio in oggetto allora occore aggiungere al file 
sqlnet.ora
questa stringa 
NAMES.DIRECTORY_PATH= (TNSNAMES,EZCONNECT)

EZCONNECT elimina la necessità di cercare i nomi dei servizi nei file tnsnames.ora quando ci si  connette a un database Oracle attraverso una rete TCP/IP. 
In effetti, quando si utilizza questo metodo non è richiesto alcun sistema di denominazione o directory poiché fornisce connettività immediata. 
Estende la funzionalità del metodo di denominazione host consentendo ai client di connettersi a un database con una porta e un nome di servizio opzionali oltre al nome host del database.



Post popolari in questo blog

Funzione TO_DATE

CREATE DATABASE LINK