.NET 6 è possibile accedere a
Oracle tramite la libreria
NuGet Oracle.ManagedDataAccess.Core dotnet add package Oracle.ManagedDataAccess.Core --version 3.21.110
il formato della
connection string deve essere questo
Data Source=[hostname]:[port]/[DB service name];User Id=[username];Password=[password];
L'accesso da
C# ad
Oracle può essere fatto secondo questo esempio:
using Oracle.ManagedDataAccess.Client;
TestOracle().Wait();
static async Task TestOracle()
{
string connectionString = "Data Source=localhost:1521/XEPDB1;"
+ "DBA Privilege=SYSDBA;"
+ "User Id=SYS;Password=?????????;";
string query = "SELECT \'Ciao\' FROM dual";
OracleConnection con = new OracleConnection(connectionString);
await con.OpenAsync();
OracleCommand cmd = con.CreateCommand();
cmd.CommandText = query;
DbDataReader reader = await cmd.ExecuteReaderAsync();
await reader.ReadAsync();
Console.WriteLine(reader.GetString(0));
}
ATTENZIONE: nella connection string ho utilizzato, per l'esempio, l'attributo
DBA Privilege=SYSDBA; con l'utente
SYS, questa cosa è da evitare assolutamente in produzione.
L'utente
SYS è molto potente, si tratta di un
super admin Oracle non deve essere usato nelle applicazioni.
Meglio seguire sempre il
principio di sicurezza di utilizzare un
utente dedicato alla singola applicazione, con i
minori privilegi possibili.
Questo per ridurre il più possibile i rischi e l'esposizione dei dati in caso di attacco hacker.
Se si utilizza un utente con elevati privilegi come
SYS senza il parametro
DBA Privilege=SYSDBA;, si ottiene l'errore
One or more errors occurred. (ORA-28009: la connessione come SYS deve essere come SYSDBA o come SYSOPER)
ORA-28009: connection as SYS should be as SYSDBA or SYSOPER