Lavorando con
.Net core 3.1 e
Oracle può capitare di imbattersi in questo errore:
ORA-12504: TNS: listener was not given the Service_name in connect_data
Questo capita quando nella stringa di connessione
Data Source=DBProd;User Id=xxx;Password=nnnn;"
si vuole referenziare un alias,
DBProd, specificato nel file
tnsnames.ora:
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:
<ip>:<port>/<service name>
File: appsettings.json
{
"ConnectionStrings": {
"Oracle": "Data Source=10.1.3.13:1521/racPod12;User Id=xxx;Password=nnnn;"
},
...
}
Per connettersi a
Oracle usare il pacchetto
Nuget Oracle.ManagedDataAccess.Core