O que é o mínimo cliente pegada necessária para ligar C# para um banco de dados Oracle?

StackOverflow https://stackoverflow.com/questions/70602

  •  09-06-2019
  •  | 
  •  

Pergunta

Eu tenho ligado com êxito ao banco de dados Oracle (10g) de C# (Visual Studio 2008) baixando e instalando o cliente de ferramentas de administração e Visual Studio 2008 no meu laptop.

A superfície de instalação para Oracle ferramentas de Cliente foi de mais de 200Mb, e muito prolixo.

Alguém sabe qual o mínimo viável pegada é?Eu estou esperando que uma única DLL e um comando registrar, mas eu tenho a sensação de que eu preciso para instalar um oracle home, e definir várias variáveis de ambiente.

Eu estou usando o Oracle.DataAccess no meu código.

Foi útil?

Solução

Você precisa de um Cliente Oracle para se conectar a um banco de dados Oracle.A maneira mais fácil é instalar o Oracle Data Access Components.

Para minimizar a pegada, eu sugiro o seguinte :

  • Usar o provedor Microsoft para Oracle (Sistema.Dados.OracleClient), que acompanha o quadro.
  • Baixar o O Oracle Instant Client Pacote - Básico Lite :este é um arquivo zip com (quase) o mínimo.Eu recomendo a versão 10.2.0.4, que é muito menor do que a versão 11.1.0.6.0.
  • Descompacte os seguintes arquivos em uma pasta específica :
    • v10 :
      • oci.dll
      • orannzsbb10.dll
      • oraociicus10.dll
    • v11 :
      • oci.dll
      • orannzsbb11.dll
      • oraociei11.dll
  • Em uma plataforma x86, adicione a DLL do CRT para o Visual Studio 2003 (msvcr71.dll) para esta pasta, como o Oracle caras esqueci de leia isso...
  • Adicionar esta pasta para a variável de ambiente PATH.
  • Use o A Ligação Fácil De Nomenclatura método em seu aplicativo para livrar-se do infame TNSNAMES.ORA arquivo de configuração.Ele se parece com isso : sales-server:1521/sales.us.acme.com.

Isso equivale a cerca de 19Mb (v10).

Se você não se preocupa em compartilhar esta pasta entre várias aplicações, uma alternativa seria enviar o acima mencionado DLLs junto com seus binários do aplicativo, e ignorar a configuração de CAMINHO de passo.

Se você absolutamente precisa para usar o provedor do Oracle (Oracle.DataAccess), você vai precisar de :

  • ODP .NET 11.1.0.6.20 (a primeira versão, que supostamente trabalha com o Instant Client).
  • Instant Client 11.1.0.6.0, obviamente.

Nota que eu não tenha testado esta última configuração...

Outras dicas

A partir de 2014, a OPD.NET, Conseguiu Driver é a menor pegada de carbono.

Aqui está um código de uso comparação aos não-gerenciado versões anteriores (desatualizado) respostas sugeridas:http://docs.oracle.com/cd/E51173_01/win.122/e17732/intro005.htm#ODPNT148

Você vai precisar baixar essas dlls e referência Oracle.ManagedDataAccess.dll em seu projeto:Baixar o ODP.NET, Conseguiu Driver Xcopy apenas na versão

Aqui está um típico impressão de pé você vai precisar do pacote com seu lançamento:

  1. Oracle.ManagedDataAccess.dll
  2. Oracle.ManagedDataAccessDTC.dll

todos juntos, uma gritante 6.4 MB .Net 4.0.

Eu uso o método sugerido por Pandicus acima, no Windows XP, usando o ODAC 11.2.0.2.1.As etapas são as seguintes:

  1. Faça o Download do "ODAC 11.2 Versão 3 (11.2.0.2.1) com a Implantação do Xcopy" pacote de oracle.com (53 MB), e extraia o ZIP.
  2. Coletamos as seguintes DLLs:oci.dll (1 MB), oraociei11.dll (130 MB!), OraOps11w.dll (0.4 MB) Oracle.DataAccess.dll (1 MB).O restante do material pode ser excluído, e nada precisa ser instalado.
  3. Adicione uma referência para Oracle.DataAccess.dll, adicionar using Oracle.DataAccess.Client; para o seu código e agora você pode usar tipos de como OracleConnection, OracleCommand e OracleDataReader para acessar um banco de dados Oracle.Ver o documentação da classe para obter detalhes.Não há necessidade de usar o tnsnames.ora arquivo de configuração, apenas o seqüência de caracteres de conexão deve ser definido corretamente.
  4. Acima de 4 DLLs ter para ser implantado junto com o seu executável.

Isso permite que você se conectar com ODP.net com 5 arquivos redistribuíveis do oracle:

Chris entrada do blog:Usando o novo ODP.Net para acessar o Oracle a partir de C# com a simples implantação de

Editar:No caso, o blog a cada desce, aqui está um breve resumo...

  • oci.dll
  • Oracle.DataAccess.dll
  • oraociicus11.dll
  • OraOps11w.dll
  • orannzsbb11.dll
  • oraocci11.dll
  • ociw32.dll

certifique-se de que você obter TODAS as DLL do mesmo ODP.Net / ODAC de distribuição, para evitar o número de versão de conflitos, e colocá-los todos na mesma pasta como o EXE

DevArt http://www.devart.com/, anteriormente CoreLab (crlab.com fornecimento de um puro-C# Oracle cliente.Que uma única dll, e ele funciona muito bem.

Aqui está uma atualização para Oracle 11.2.0.4.0.Eu tive sucesso com o procedimento a seguir no Windows 7 usando System.Data.OracleClient.

1. Download Cliente Instantâneo - Pacote Básico Lite: De 32 Bits Do Windows ou 64-Bit.

2. Copie os seguintes arquivos para um local no seu caminho de sistema:

32-Bit

 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-Bit

   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. Construir uma seqüência de caracteres de conexão que omite a necessidade de tnsnames.ora.

(Ver exemplos no programa de teste abaixo.)

4. Executar este mínima C# programa para testar a instalação:

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);
    }
}

Dica Final: Se você encontrar o erro "O sistema.Dados.OracleClient requer software de cliente Oracle versão 8.1.7", ver esta pergunta.

ODAC xcopy você vai chegar longe, com cerca de 45 MB.http://www.oracle.com/technology/software/tech/windows/odpnet/index.html

Eu encontrei este post no Oracle fórum muito útil também:

Como a instalação do Oracle Instant Client com o Visual Studio

Comentário:o ADO.NET a equipe é reprovar do Sistema.Dados.OracleClient assim, para futuros projetos você deve usar ODP.NET

Reprodução:

O programa de configuração as seguintes variáveis de ambiente:

  1. certifique-se de que nenhum outro diretório oracle está no seu CAMINHO
  2. definir o seu CAMINHO para apontar para o seu cliente instantâneo
  3. definir o seu TNS_ADMIN para apontar para onde você tnsnames.ora arquivo é localizado
  4. definir o seu NLS_LANG
  5. definir o seu ORACLE_HOME para o seu cliente instantâneo

Para mim, eu NLS_LANG para

http://download-east.oracle.com/docs/html/A95493_01/gblsupp.htm#634282

Eu verifiquei isso, estava usando o cliente correto de software usando o sqlplus add-on para o cliente instantâneo.

Para mim, eu definida:CONJUNTO NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252

Nota:antes de fazer qualquer alteração, cópia de segurança do Oracle chave do registro (se houver) e cópia de segurança de seqüência de caracteres para quaisquer variáveis de ambiente.

Leia o Oracle Instant Client FAQ aqui

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top