Quiero conectarme desde mi base de código, que es un proyecto de consola C# a una base de datos de Oracle.
Estoy usando Entity Framework Core 6.0:
using Microsoft.EntityFrameworkCore;
Console.WriteLine("Hello, World!");
BloggingContext oracleContext = new BloggingContext();
Console.WriteLine(oracleContext.Database.CanConnect());
public class BloggingContext: DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseOracle(@"User Id=userid;Password=password;Data Source=localhost:1521/ORACLE19");
}
El código se compiló correctamente, pero no se estableció ninguna conexión
. Obtengo Falso en la siguiente línea de salida cuando verifico oracleContext.Database.CanConnect(). ¿Qué credenciales debo poner en la cadena de conexión UseOracle("..."), en lugar de las que se muestran? ¡Intenté todo!
Mi base de datos Oracle está en mi computadora local y funciona bien, porque puedo conectarme a ella a través de herramientas de conexión como SQL*plus, RaizorSQL, PL/SQL Developer y ver su contenido.
¿Cómo puedo aprender la cadena de conexión correcta para UseOracle ("..."), usando estas herramientas o de alguna otra manera? ¿Cuáles son estos ID de usuario, contraseña, fuente de datos?
Solución del problema
"¿Qué es SERVICE_NAME?"
Dijiste que puedes conectarte con sqlplus, y la base de datos está en tu máquina local. Tan...
[oracle@vbol83-01 ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Apr 1 09:04:52 2022
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> show parameter service_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names string orcl
SQL>
O bien, verificando qué nombres de servicio admite el oyente:
[
oracle@vbol83-01 ~]$ lsnrctl status
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 01-APR-2022 09:06:37
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 14-MAR-2022 18:08:17
Uptime 17 days 14 hr. 58 min. 19 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Log File /u01/app/oracle/diag/tnslsnr/vbol83-01/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=vbol83-01.localdomain)(PORT=1521)))
Services Summary...
Service "86b637b62fdf7a65e053f706e80a27ca" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "d21995589d8b1045e0556f99782067a1" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orcl" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "pdb01" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully
Entonces, en mi sistema, el nombre del servicio es 'orcl'. Puede ser diferente en el tuyo.
No hay comentarios.:
Publicar un comentario