c# - leer - lector de huella digital mysql
¿Cuál es la huella mínima del cliente requerida para conectar C#a una base de datos Oracle? (8)
Me conecté con éxito a una base de datos Oracle (10g) desde C # (Visual Studio 2008) descargando e instalando las herramientas de administración de clientes y Visual Studio 2008 en mi computadora portátil.
La huella de instalación para las herramientas de Oracle Client fue de más de 200 Mb, y bastante larga.
¿Alguien sabe cuál es la huella mínima de trabajo? Espero que sea una sola DLL y un comando de registro, pero tengo la sensación de que necesito instalar un oráculo en casa y establecer varias variables de entorno.
Estoy usando Oracle.DataAccess en mi código.
A partir de 2014, OPD.NET, Managed Driver es la huella más pequeña.
Aquí hay una comparación del uso del código con las versiones no administradas que sugirieron las respuestas anteriores (desactualizadas): http://docs.oracle.com/cd/E51173_01/win.122/e17732/intro005.htm#ODPNT148
Deberá descargar estos dlls y hacer referencia a Oracle.ManagedDataAccess.dll
en su proyecto: descargue la versión de ODP.NET, Managed Driver Xcopy solamente.
Esta es una impresión de pie típica que deberá empaquetar con su versión:
-
Oracle.ManagedDataAccess.dll
-
Oracle.ManagedDataAccessDTC.dll
todos juntos, una friolera de 6,4 MB para .Net 4.0.
Aquí hay una actualización para Oracle 11.2.0.4.0 . Tuve éxito con el siguiente procedimiento en Windows 7 usando System.Data.OracleClient
.
1. Descargue el paquete Instant Client - Basic Lite : Windows 32 bits o 64-Bit .
2. Copie los siguientes archivos a una ubicación en la ruta del sistema:
32 bits
1,036,288 2013-10-11 oci.dll
348,160 2013-10-11 ociw32.dll
1,290,240 2013-09-21 orannzsbb11.dll
562,688 2013-10-11 oraocci11.dll
36,286,464 2013-10-11 oraociicus11.dll
64 bits
691,712 2013-10-09 oci.dll
482,304 2013-10-09 ociw32.dll
1,603,072 2013-09-10 orannzsbb11.dll
1,235,456 2013-10-09 oraocci11.dll
45,935,104 2013-10-09 oraociicus11.dll
3. Construya una cadena de conexión que omita la necesidad de tnsnames.ora .
(Vea ejemplos en el programa de prueba a continuación).
4. Ejecute este programa mínimo de C # para probar su instalación:
using System;
using System.Data;
using System.Data.OracleClient;
class TestOracleInstantClient
{
static public void Main(string[] args)
{
const string host = "yourhost.yourdomain.com";
const string serviceName = "yourservice.yourdomain.com";
const string userId = "foo";
const string password = "bar";
var conn = new OracleConnection();
// Construct a connection string using Method 1 or 2.
conn.ConnectionString =
GetConnectionStringMethod1(host, serviceName, userId, password);
try
{
conn.Open();
Console.WriteLine("Connection succeeded.");
// Do something with the connection.
conn.Close();
}
catch (Exception e)
{
Console.WriteLine("Connection failed: " + e.Message);
}
}
static private string GetConnectionStringMethod1(
string host,
string serviceName,
string userId,
string password
)
{
string format =
"SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)" +
"(HOST={0})(PORT=1521))" +
"(CONNECT_DATA=(SERVER=DEDICATED)" +
"(SERVICE_NAME={1})));" +
"uid={2};" +
"pwd={3};"; // assumes port is 1521 (the default)
return String.Format(format, host, serviceName, userId, password);
}
static private string GetConnectionStringMethod2(
string host,
string serviceName,
string userId,
string password
)
{
string format =
"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)" +
"(HOST={0})(PORT=1521))" +
"(CONNECT_DATA=(SERVER=DEDICATED)" +
"(SERVICE_NAME={1})));" +
"User Id={2};" +
"Password={3};"; // assumes port is 1521 (the default)
return String.Format(format, host, serviceName, userId, password);
}
}
Consejo final: si encuentra el error "System.Data.OracleClient requiere el software de cliente Oracle versión 8.1.7" , consulte esta pregunta .
De esta manera, te permite conectarte con ODP.net usando 5 archivos redistribuibles de Oracle:
Editar: en caso de que el blog se caiga, aquí hay un breve resumen ...
- oci.dll
- Oracle.DataAccess.dll
- oraociicus11.dll
- OraOps11w.dll
- orannzsbb11.dll
- oraocci11.dll
- ociw32.dll
asegúrese de obtener TODAS esas DLL de la misma distribución ODP.Net / ODAC para evitar conflictos de número de versión, y ponerlos todos en la misma carpeta que su EXE
DevArt http://www.devart.com/ , anteriormente CoreLab (crlab.com) proporciona un cliente de Oracle C puro. Es un dll único, y funciona bien.
Encontré esta publicación en el foro de Oracle muy útil también:
Cómo configurar Oracle Instant Client con Visual Studio
Observación: el equipo de ADO.NET está desaprobando System.Data.OracleClient, por lo que para futuros proyectos debería usar ODP.NET
Reproducción:
Configure las siguientes variables de entorno:
- asegúrate de que no haya otro directorio de Oracle en tu PATH
- establece tu ruta para apuntar a tu cliente instantáneo
- configure su TNS_ADMIN para que apunte a donde se encuentra el archivo tnsnames.ora
- configura tu NLS_LANG
- configura tu ORACLE_HOME a tu cliente instantáneo
Para mí, configuré NLS_LANG para
http://download-east.oracle.com/docs/html/A95493_01/gblsupp.htm#634282
Verifiqué que estaba utilizando el software de cliente correcto mediante el uso del complemento sqlplus para el cliente instantáneo.
Para mí, establecí: SET NLS_LANG = AMERICAN_AMERICA.WE8MSWIN1252
Nota: antes de realizar cambios, haga una copia de seguridad de su clave de registro de Oracle (si existe) y haga una copia de seguridad de la cadena para cualquier variable de entorno.
Necesita un cliente de Oracle para conectarse a una base de datos Oracle. La forma más fácil es instalar Oracle Data Access Components .
Para minimizar la huella, sugiero lo siguiente:
- Utilice el proveedor de Microsoft para Oracle (System.Data.OracleClient), que se envía con el marco.
- Descargue Oracle Instant Client Package - Basic Lite: este es un archivo zip con (casi) el mínimo indispensable. Recomiendo la versión 10.2.0.4, que es mucho más pequeña que la versión 11.1.0.6.0.
- Descomprime los siguientes archivos en una carpeta específica:
- v10:
- oci.dll
- orannzsbb10.dll
- oraociicus10.dll
- v11:
- oci.dll
- orannzsbb11.dll
- oraociei11.dll
- v10:
- En una plataforma x86, agregue la DLL CRT para Visual Studio 2003 (msvcr71.dll) a esta carpeta, ya que los chicos de Oracle se olvidó de leer esto ...
- Agregue esta carpeta a la variable de entorno PATH.
- Use el método Easy Connect Naming en su aplicación para deshacerse del infame archivo de configuración TNSNAMES.ORA. Se ve así:
sales-server:1521/sales.us.acme.com
.
Esto equivale a alrededor de 19Mb (v10).
Si no le importa compartir esta carpeta entre varias aplicaciones, una alternativa sería enviar los archivos DLL mencionados anteriormente junto con los archivos binarios de la aplicación y omitir el paso de configuración de RUTA.
Si necesita usar el proveedor de Oracle (Oracle.DataAccess), necesitará:
- ODP .NET 11.1.0.6.20 (la primera versión que supuestamente funciona con Instant Client).
- Cliente instantáneo 11.1.0.6.0, obviamente.
Tenga en cuenta que no he probado esta última configuración ...
ODAC xcopy lo llevará lejos con aproximadamente 45MB. http://www.oracle.com/technology/software/tech/windows/odpnet/index.html
Uso el método sugerido por Pandicus arriba, en Windows XP, usando ODAC 11.2.0.2.1. Los pasos son los siguientes:
- Descargue el paquete "ODAC 11.2 Release 3 (11.2.0.2.1) con Xcopy Deployment" de oracle.com (53 MB) y extraiga el ZIP.
- Reúna las siguientes DLL: oci.dll (1 MB), oraociei11.dll (130 MB), OraOps11w.dll (0.4 MB), Oracle.DataAccess.dll (1 MB). Las cosas restantes se pueden eliminar y no se debe instalar nada.
- Agregue una referencia a Oracle.DataAccess.dll, agregue
using Oracle.DataAccess.Client;
a su código y ahora puede usar tipos comoOracleConnection
,OracleCommand
yOracleDataReader
para acceder a una base de datos Oracle. Vea la documentación de la clase para más detalles. No es necesario utilizar el archivo de configuración tnsnames.ora, solo la cadena de conexión debe configurarse correctamente. - Las 4 DLL anteriores deben implementarse junto con su ejecutable.