Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

thiago hora

Controle de Transações com DB link

Recommended Posts

Olá pessoal, estou pesquisando sobre esses assunto gostaria de saber se alguém conhece uma maneira de fazer isso.

Tenho duas bases de dados ligadas por um DBlink oracle versão 10.2, tenho jobs que executam o dia todo, todos eles tratam exception. Mas faz um tempo vim percebendo que quando ocorre um problema de comunicação na rede no meio de uma transação está fica presa, e não dispara exception, ficando horas rodando. Existe alguma maneira de matar a sessão da transação ou finaliza-la?

 

 

Agradeço desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Thiago,

 

O problema está justamente como o Motta mencionou, durante o processo de Commit-two-phase e com um DBLINK criado sobre o protocolo TCP, que ao perder algum pacote tenta reenviar, pode segurar as suas sessões devido aos problemas de link.

 

Ao consultar as views dba_2pc_pending e dba_2pc_neighbors perceberá que suas sessões está ainda em processamento pela PMON, deste modo, o melhor a realizar é efetuar um FORCE ROLLBACK '<global_id>' e usar o pacote dbms_transaction para limpar a fila de transações.

 

Para não ocorrer mais isso, bom, 1º tenha um link bom, pois isso existe justamente para assegurar a integridade do dado no DBLINK, ou faça "wordarrounds", no processo coloque PRAGMA TRANSACTION que não irá trabalhar teoricamente com o Commit-two-phase.

 

Abraços,

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.