“Não é possível se inscrever na transação” com o servidor vinculado da Oracle do MS SQL Server

0

Temos uma configuração onde usamos o MS SQL Server com um servidor Oracle vinculado. Nosso banco de dados tem exibições no banco de dados Oracle. Temos software escrito interno (eu sou o desenvolvedor líder) que usa essa configuração.

Tivemos essa configuração por cinco anos e ela está funcionando bem em produção, em um servidor beta e em todas as nossas caixas de desenvolvimento, exceto a minha.

Eu recentemente reconstruí minha máquina usando o Windows 10 (eu sou o primeiro usando o Windows 10 para isso). Estou usando o cliente Oracle Database 12c Release 1 (12.1.0.2.0) (usamos anteriormente 11g, mas o Windows 10 parece exigir 12c).

Quando tento tentar executar uma atualização em uma exibição no servidor Oracle, dentro de uma transação, ela falha. Isso funciona bem em qualquer um dos nossos outros servidores, então tenho certeza que é um problema do Windows 10, problema do cliente do Oracle 12c ou de alguma forma eu estraguei a configuração.

Eu fiz todas as configurações no passado (produção, beta e todas as configurações da máquina do desenvolvedor), então tenho um pouco de experiência ao longo dos anos. O problema é apenas com transação. Consultas e atualizações não transacionais funcionam bem. Aqui está um exemplo que irá falhar.

begin tran
SET XACT_ABORT ON;
update CLIENT set SUPERVISOR_FLAG = 'Y' where CLIENT_CODE = 'XYZ123'
commit tran

O erro que recebo é:

OLE DB provider "OraOLEDB.Oracle" for linked server "REMOTESERVER" returned message "Unable to enlist in the transaction.".
Msg 7391, Level 16, State 2, Line 2
The operation could not be performed because OLE DB provider "OraOLEDB.Oracle" for linked server "REMOTESERVER" was unable to begin a distributed transaction.

Vários servidores SQL vinculam-se ao mesmo servidor Oracle de back-end e eles não têm nenhum problema com isso, portanto, posso descartar um problema de configuração no servidor Oracle.

Estas são as configurações do meu DTC e são as mesmas de outras máquinas que estão funcionando:

ParaminhasconfiguraçõesdoOracleProviderparaOleDB(OraOLEDB.Oracle),eutenho"Parâmetros dinâmicos", "Consultas aninhadas", "Permitir inprocesso" e "Operador de suporte 'como' ativado". Isso também é o mesmo que outras máquinas.

Em Opções do servidor, as configurações são:

  • Compatível com Agrupamento - Falso
  • Acesso a dados - Verdadeiro
  • RPC - verdadeiro
  • RPC Out - Verdadeiro
  • Usar agrupamento remoto - verdadeiro
  • Nome do agrupamento - [em branco]
  • Tempo limite de conexão - 0
  • Tempo limite da consulta - 0
  • Distribuidor - Falso
  • Editor - falso
  • Assinante - Falso
  • Validação do esquema lento - falso
  • Ativar a promoção de transações distribuídas - Verdadeiro

Novamente, eles correspondem às configurações de outros servidores em funcionamento.

Estou perplexo. Eu realmente aprecio qualquer ajuda que alguém possa oferecer sobre isso.

Atualização:

Não tenho certeza se isso ajuda, mas este é o rastreamento do DTC:

pid=10580      ;tid=10624      ;time=07/19/2018-13:02:06.767   ;seq=1          ;eventid=TRANSACTION_MANAGER_STARTED_2            ;;"TM Identifier='(null)                                            '" ;"MS DTC started with the following settings: Security Configuration (OFF = 0 and ON = 1): Network Administration of Transactions = 1, Network Clients = 1, Inbound Transactions = 1, Outbound Transactions = 1, Transaction Internet Protocol (TIP) = 0, XA Transactions = 1, MSDTC RPC Security = Mutual Authentication Required, Account = NT AUTHORITY\NetworkService, Firewall Exclusion = 0, Transaction Bridge Installed = 0, Filtering duplicate events = 1."
pid=10580      ;tid=10624      ;time=07/19/2018-13:02:06.767   ;seq=2          ;eventid=TRACE_SETTINGS                           ;;"TM Identifier='(null)                                            '" ;"Trace Configuration (OFF = 0 and ON = 1): Tracing Of DTC = 1, Tracing Of Transactions = 1, Tracing Of Aborted Transactions = 1, Tracing Of Long-Lived Transactions = 1, Tracing Of All Transactions = 0, Max Limit on Memory Buffers = 0."
pid=10580      ;tid=17072      ;time=07/19/2018-13:02:35.182   ;seq=3          ;eventid=TRANSACTION_BEGUN                        ;tx_guid=98d30080-f9d4-46cb-a35c-af47629b377c     ;"TM Identifier='(null)                                            '" ;"transaction has begun, description :'user_transaction'"
pid=10580      ;tid=17072      ;time=07/19/2018-13:02:35.182   ;seq=4          ;eventid=RM_ENLISTED_IN_TRANSACTION               ;tx_guid=98d30080-f9d4-46cb-a35c-af47629b377c     ;"TM Identifier='(null)                                            '" ;"resource manager #1003 enlisted as transaction enlistment #1. RM guid = '452dc8f8-8bbd-4da4-b3e2-e1e29d417a15'"
pid=10580      ;tid=17072      ;time=07/19/2018-13:02:36.104   ;seq=5          ;eventid=RECEIVED_ABORT_REQUEST_FROM_BEGINNER     ;tx_guid=98d30080-f9d4-46cb-a35c-af47629b377c     ;"TM Identifier='(null)                                            '" ;"received request to abort the transaction from beginner"
pid=10580      ;tid=17072      ;time=07/19/2018-13:02:36.104   ;seq=6          ;eventid=TRANSACTION_ABORTING                     ;tx_guid=98d30080-f9d4-46cb-a35c-af47629b377c     ;"TM Identifier='(null)                                            '" ;"transaction is aborting"
pid=10580      ;tid=17072      ;time=07/19/2018-13:02:36.104   ;seq=7          ;eventid=RM_ISSUED_ABORT                          ;tx_guid=98d30080-f9d4-46cb-a35c-af47629b377c     ;"TM Identifier='(null)                                            '" ;"abort request issued to resource manager #1003 for transaction enlistment #1"
pid=10580      ;tid=17072      ;time=07/19/2018-13:02:36.104   ;seq=8          ;eventid=RM_ACKNOWLEDGED_ABORT                    ;tx_guid=98d30080-f9d4-46cb-a35c-af47629b377c     ;"TM Identifier='(null)                                            '" ;"received acknowledgement of abort request from the resource manager #1003 for transaction enlistment #1"
pid=10580      ;tid=17072      ;time=07/19/2018-13:02:36.104   ;seq=9          ;eventid=TRANSACTION_ABORTED                      ;tx_guid=98d30080-f9d4-46cb-a35c-af47629b377c     ;"TM Identifier='(null)                                            '" ;"transaction has been aborted"
pid=10580      ;tid=18812      ;time=07/19/2018-13:02:57.188   ;seq=10         ;eventid=CHECKPOINTING_STOPPED                    ;;"TM Identifier='(null)                                            '" ;"MSDTC is suspending the checkpointing of transactions due to lack of activity"
pid=10580      ;tid=18812      ;time=07/19/2018-13:02:57.188   ;seq=11         ;eventid=TRACING_STOPPED                          ;;"TM Identifier='(null)                                            '" ;"MSDTC is suspending the tracing of long - lived transactions due to lack of activity"
pid=10580      ;tid=17072      ;time=07/19/2018-13:04:46.678   ;seq=12         ;eventid=TRACING_STARTED                          ;;"TM Identifier='(null)                                            '" ;"MSDTC is resuming the tracing of long - lived transactions"
    
por Pete 20.07.2018 / 17:48

0 respostas