CORRECÇÃO: Uma conexão em pool não é descartada pelo provedor gerenciado do Microsoft .NET para Oracle quando ocorre uma exceção

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 830173
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sintomas
OracleConnection objetos essa experiência erros porque sessões ou conexões são ignorados são retornados ao pool de conexão quando o método Connection.Close é chamado. Em seguida, os objetos OracleConnection são reutilizados. Isso pode causar um comportamento inesperado.

Por exemplo, você pode tentar se conectar durante uma reinicialização do servidor ou uma conexão pode ser interrompida na rede. Embora o comportamento esperado é descartar a conexão incorreta e tente usar uma nova conexão física, o comportamento real é que a conexão incorreta é reutilizada do pool de conexão.

No Microsoft .NET Framework 1.1, se um ou mais dos seguintes códigos de erro Oracle forem recebido, o provedor de dados OracleClient não corretamente descartar a conexão do pool de conexão mesmo se a conexão não for válida:
  • 18
  • 19
  • 24
  • 28
  • 436
  • 1033
  • 1034
  • 1075
  • 3113
  • 3114
  • Todos os erros entre 12500 e 12699, inclusive
  • 1012
  • 2399
  • 2392
No .NET Framework 1.1 Service Pack 1 (SP1), o objeto de conexão será descartado se um ou mais desses códigos de erro são encontrados, exceto para os seguintes códigos de erro:
  • 1012
  • 2399
  • 2392
Se você tiver um dos seguintes códigos de três erro, você deve aplicar esse hotfix.

Para obter uma descrição dos códigos de erro Oracle, consulte a documentação do Oracle.

Observação O hotfix descrito neste artigo não impede que a causa original desses erros. No entanto, quando esses erros Oracle são encontrados em uma conexão, o hotfix permite que a conexão ser corretamente removido o pool para que ela não é reutilizada.
Resolução
Um hotfix suportado agora está disponível da Microsoft, mas destina-se somente a corrigir o problema descrito neste artigo. Aplique-o somente aos sistemas que apresentarem esse problema específico.

Para resolver esse problema, contate o Atendimento Microsoft para obter o hotfix. Para obter uma lista completa de telefones do Atendimento Microsoft e informações sobre os custos de suporte da, visite o seguinte site: Observação Em alguns casos, as taxas cobradas pelas ligações para chamadas de suporte podem ser canceladas se um profissional de suporte da Microsoft determinar que uma atualização específica resolverá o problema. Os custos normais de suporte serão aplicados a questões e problemas que não se qualificam à atualização específica em questão de suporte adicionais.

Informações sobre o service pack

Observação Todos os códigos de erro, exceto para foram tratados corretamente e foram corrigidos no .NET Framework 1.1 SP1:
  • 1012
  • 2399
  • 2392
É recomendável que você instale o .NET Framework 1.1 SP1 para corrigir esse problema porque os service packs são testados mais rigorosamente que os hotfixes. No entanto, se você enfrentar um ou mais desses três códigos de erro do Oracle, você deve aplicar esse hotfix. Nesse caso, adquira o hotfix contatando o Atendimento Microsoft. Aplicar esse hotfix irá se certificar que as conexões que ocorrerem esses erros não são colocados em pool e reutilizadas.

Para obter informações adicionais sobre o .NET Framework 1.1 Service Pack 1, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
885055Como obter o Microsoft .NET Framework 1.1 Service Pack 1

Informações sobre o hotfix

A versão em inglês deste hotfix tem atributos de arquivo (ou atributos de arquivo posteriores) listados na tabela a seguir. As datas e horas desses arquivos são listadas na acordo hora universal coordenada (UTC). Quando você exibe as informações do arquivo, ele é convertido para a hora local. Para encontrar a diferença entre o UTC e a hora local, use a guia fuso horário na ferramenta Data e hora no painel de controle.

O .NET Framework 1.1 RTM

   Date         Time   Version        Size       File name   ------------------------------------------------------------------------------------   24-May-2004  20:47  1.1.4322.1046    303,104  System.data.oracleclient.dll    26-May-2004  00:50  1.0.859.2574   1,126,192  Ndp1.1-kb830173-x86.exe    27-May-2004  22:54  5.4.15.0         465,648  Windowsserver2003-kb830173-x86-enu.exe   14-Oct-2003  16:55  1.1.4322.957     303,104  System.data.oracleclient.dll     15-Oct-2003  00:58  1.0.0.0        1,072,808  Ndp1.1-kb830173-x86.exe     17-Oct-2003  23:00                   989,452  Ndp1.1-kb830173-x86.zip

O .NET Framework 1.1 SP1

   Date         Time   Version        Size     File name   ----------------------------------------------------------------------------------   23-Oct-2004  02:01  1.1.4322.2038  303,104  System.data.oracleclient.dll    14-Oct-2004  22:59  1.0.1045.3098  966,432  Ndp1.1sp1-kb887548-x86.exe    24-Oct-2004  01:30  1.0.0.0        485,104  Windowsserver2003-kb887548-x86-enu.exe    24-Oct-2004  01:30  1.0.0.0        484,080  Windowsserver2003-kb887548-x86-kor.exe  
Situação
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".
Mais Informações

Etapas para reproduzir o comportamento

A seqüência seguinte demonstra que mesmo após um .NET aplicativo é desconectado do servidor Oracle, o Microsoft .NET Managed Provider for Oracle não descartar a conexão do pool de conexão:
  1. Criar um aplicativo ADO.NET que usa o provedor do Microsoft Oracle .NET para acessar a compilação de back-end, Oracle e, em seguida, executar o aplicativo.
  2. Conectar ao servidor Oracle usando o ADO.NET aplicativo que você criou na etapa 1.
  3. Feche a conexão do Oracle por parar o servidor Oracle ou desconectar o cliente de rede física.
O comportamento esperado é que o aplicativo recebe um erro que indica que a sessão foi encerrada e que a conexão deve ser descartada do pool. Na próxima vez que você abre uma conexão, que você pretende usar uma nova conexão física com o servidor.

No entanto, o comportamento real é que a conexão que encontra o problema é retornada para o pool de cliente Oracle. Esta conexão mais tarde pode ser recuperada do pool do aplicativo .NET na próxima vez que o aplicativo tenta abrir uma conexão com o servidor.
Referências
Para obter informações adicionais, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
824684Descrição da terminologia padrão que é usada para descrever as atualizações de software
310985Como usar o provedor gerenciado do .NET ODBC no Visual Basic .NET e seqüências de conexão

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 830173 - Última Revisão: 12/08/2015 05:01:04 - Revisão: 7.2

Microsoft .NET Framework 1.1, Microsoft .NET Framework 1.1 Service Pack 1

  • kbnosurvey kbarchive kbmt kbqfe kbhotfixserver kbdatapooling kbclientserver kbuser kbquery kbconnectivity kbfix kbbug KB830173 KbMtpt
Comentários