Accedere a Oracle da .NET 6
.NET 6 è possibile accedere a Oracle tramite la libreria NuGet Oracle.ManagedDataAccess.Core
il formato della connection string deve essere questo
L'accesso da C# ad Oracle può essere fatto secondo questo esempio:
Se si utilizza un utente con elevati privilegi come SYS senza il parametro DBA Privilege=SYSDBA;, si ottiene l'errore
Text: NuGet Library Oracle
dotnet add package Oracle.ManagedDataAccess.Core --version 3.21.110
Text: Formato connection string
Data Source=[hostname]:[port]/[DB service name];User Id=[username];Password=[password];
L'accesso da C# ad Oracle può essere fatto secondo questo esempio:
C#: Program.cs
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.
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
ORA-28009: connection as SYS should be as SYSDBA or SYSOPER