Sim, seja num banco local, seja num banco remoto, seja uma Transação 
distribuída (ie,com DMLs rolando em dois databases) o princípio da Atomicidade 
é mantido nessa Transação controlada externamente : a idéia do gerenciador 
externo é que ele recebe uma "fila" , uma "sequência" de transações a executar 
MAs não necessariamente elas foram originadas por uma sessão de banco - pense 
no exemplo de um email, de uma mensagem - o emissor da mensagem pode nem estar 
mais online quando o email chega pro destinatário,pois eles vão sendo 
"empilhados", "enfileirados" no servidor de email , que à pedido desse 
remetente Lê na ordem cada elemento na fila , o processa/envia e depois 
remove...
 Agora, que fique CLARO : ao usar o XA, vc está PROGRAMANDO, vc está escrevendo 
uma lógica, então é VOCÊ que está no controle - com grandes poderes vem grande 
responsabilidade, se vc não programar DIREITINHo, se vc implementar umalógica 
Furada, Claro que vc pode ter lost update, pode ter violação de atomicidade... 
É por isso que o manual 
http://docs.oracle.com/cd/E13218_01/wlp/docs81/sp2/db/5XA.html , por exemplo, 
nos diz bem diretamente :

"An XA driver can guarantee atomicity of updates across multiple participating 
resources. Two things are required: Configuration settings and application code.
"

Ou seja, ele diz CAN, e não WILL, ele PODE assegurar Atomicidade, DESDE QUE 
seja usado direto... OK ??

 E torno a repetir : o gerenciador de transações do RDBMS Oracle é tão 
certinho, já tão longamente testado & aprovado, que eu só penso em Transações 
não-controladas pelo RDBMS *** SE ** e ** APENAS SE ** realmente há um 
impedimento, por exemplo não haverá uma sessão de conexão ao database , caso da 
Aplicação que citei, algo assim ... Transações distribuídas entre Oracle e SQL 
Server , DESDE QUE haja sim conexão/comunicação constante entre os dois bancos 
E QUE a Trsnação distribuída vai ser online, **** Não são **** por si só uma 
causa válida pra apelar pro XA, pois OBVIAMENTE o Oracle pode SIM acessar o SQL 
server via database link e enviar comandos pra lá : 
http://www.techrepublic.com/article/distributed-transactions-span-sql-server-and-oracle/1054237/
 é um exemplo um pouco antigo mas ainda válido.... valide DIREITINHO se 
realmente o XA éaplicável no seu caso...

  []s

    Chiappa

Responder a