ORA-12504: TNS: listener was not given the Service_name in connect_data
Lavorando con .Net core 3.1 e Oracle può capitare di imbattersi in questo errore:
si vuole referenziare un alias, DBProd, specificato nel file tnsnames.ora:
Con la versione .Net core 3.1 deve essere indicato il nome completo nella forma:
File: appsettings.json
ORA-12504: TNS: listener was not given the Service_name in connect_data
Questo capita quando nella stringa di connessione Text
Data Source=DBProd;User Id=xxx;Password=nnnn;"
Text
DBProd=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=10.1.3.13)
(PORT=1521)
)
(CONNECT_DATA=
(SERVICE_NAME=racProd12)
)
)
Il file tnsnames.ora solitamente si trova in C:\oracle\product\12.2.0\client_1\network\admin\
L'alias era perfettamente valido con il .NET 4.x.Con la versione .Net core 3.1 deve essere indicato il nome completo nella forma:
Text
<ip>:<port>/<service name>
JSON
{
"ConnectionStrings": {
"Oracle": "Data Source=10.1.3.13:1521/racPod12;User Id=xxx;Password=nnnn;"
},
...
}