Chiappa,
Isto que você citou sobre bancos com versões antigas é algo que nós como analistas/desenvolvedores questionamos muito a área de BD, mas nunca temos um posicionamento que nos dê garantia de que arrumaram a casa em um curto período de tempo. Quanto a sua explicação era justamente o que eu queria entender e ficou bem claro o funcionamento sim. Agora encontrar o problema e apontar a solução é como vocês estão falando, somente por alguém com acesso aos 2 sistemas e conhecimento do funcionamento de toda a estrutura de BD. De toda forma já repassei aos meus superiores tudo que consegui de explicação e direcionamento por parte de vocês sobre o que deverá ser feito para encontrarmos o real problema e implementarmos uma solução. Obrigado pela disposição, mesmo sabendo que eu não sou especialista em BD, tive um retorno EXCELENTE dos membros deste grupo. Abraços a todos! Marcos Em 12 de junho de 2014 12:30, Marcos Antônio de Araújo <maac...@gmail.com> escreveu: > André/Ângelo, > > Repassei a gerência isto que vocês falaram sobre o rastreio ser feito > nestas condições de acesso e conhecimento. Agora é aguardar a posição > deles. Valeu pelas dicas e orientações. > > Abraços, > Marcos > > > Em 11 de junho de 2014 19:33, jlchia...@yahoo.com.br [oracle_br] < > oracle_br@yahoogrupos.com.br> escreveu: > > >> >> Bem, antes de responder primeiro tenho que dizer que normalmente só é >> compreensível se usar uma versão antiga e sem suporte de database se for um >> sistema LEGADO, APOSENTADO, que nunca vai ser Homologado nas versões mais >> recentes porque está CONGELADO no tempo.... No seu caso, porém, o fato do >> sistema estar recebendo alterações NEGA a possibilidade de ser um sistema >> LEGADO, então isso é um ponto de Estranheza total... >> Um segundo ponto é : como vc mesmo diz que não é especialista, Imagino >> que vc deva ter uma posição mais gerencial, correto ?? Sendo isso mesmo, vc >> ** TEM ** que contratar um Especialista Oracle (um DBA Sênior, se for o >> caso) em que vc confie e que assuma a posuição de TECH LEADER, sim ??? >> >> Respondendo : os conceitos que precisam ser entendidos aqui são : >> >> - NÃO é a "Aplicação que abre uma TRANSAÇÃO" : no RDBMS Oracle, as >> Transações são abertas automaticamente pelo próprio RDBMS, no instante em >> que uma sessão envia o primeiro DML, e ficam abertas até a sessão >> desconectar ou enviar um COMMIT ou ROLLBACK... >> >> - se uma sessão desconectar/cair em timeout ainda com uma Transação >> aberta, normalmente é o ambiente/tool que impõe o que acontece : no >> sqlplus, por exemplo, o default é COMMITar a transação eventualmente >> pendente depois de uma desconexão graceful (ie, SEM nenhum abort envolvido) >> >> - um database link pode ser entendido como uma nova "thread" da conexão >> que o acionou, compartilhando a mesma sessão E portanto partilhando da >> mesma Transação aberta pelo banco-origem >> >> Demonstração : >> >> => crio uma tabela no banco "A", no banco-origem, e que Inclusive vai ser >> a mesma consultada remotamente na procedure chamada em B : >> >> SYSTEM:@O11GR2:SQL>create table TAB_TESTE(c1 number, c2 varchar2(40)); >> >> Tabela criada. >> >> => crio a procedure no banco XE , que vai ser acessada remotamente, SEM >> nenhuma transação aberta : >> >> HR:@XE:SQL>create or replace procedure ins_regions is >> 2 x number; >> 3 BEGIN >> 4 select count(*) into x from TAB_TESTE@o11gr2; >> 5 insert into regions values(99, 'c=' || to_char(x) ); >> 6 END; >> 7 / >> >> Procedimento criado. >> >> => eis o status da tabela : >> >> HR:@XE:SQL>select * from hr.regions; >> >> REGION_ID REGION_NAME >> ---------- ------------------------- >> 1 Europe >> 2 Americas >> 3 Asia >> 4 Middle East and Africa >> >> HR:@XE:SQL> >> >> => veja o dblink : >> >> HR:@XE:SQL>select * from user_db_links; >> >> DB_LINK USERNAME PASSWORD >> HOST CREATED >> ----------------------- ---------------- ------------------------------ >> ------------ -------- >> O11GR2 SYSTEM >> o11gr2 10/06/14 >> >> => veja que no banco-origem o dblink aponta realmente pro banco-destino >> nesse mesmo usuário SYSTEM em que estou conectado : >> >> SYSTEM:@O11GR2:SQL>select * from user_db_links; >> >> DB_LINK USERNAME PASSWORD >> HOST CREATED >> ----------------------- ---------------- ------------------------------ >> ------------ -------- >> XE HR >> XE 10/06/14 >> >> >> ==> agora , inicio uma transação local no banco-origem "A" - no meu banco >> o11gr2 - via DML : >> >> SYSTEM:@O11GR2:SQL>insert into TAB_TESTE values (1, 'Linha 1'); >> >> 1 linha criada. >> >> => e executo a procedure remota, que vai fazer DML ** mas ** vai também >> consultar tabela no banco-origem : >> >> SYSTEM:@O11GR2:SQL>exec ins_regions@xe; >> >> Procedimento PL/SQL concluído com sucesso. >> >> ==> agora COMITO : >> >> SYSTEM:@O11GR2:SQL>commit; >> >> Commit concluído. >> >> => veja como ficaram os objetos locais : >> >> SYSTEM:@O11GR2:SQL>select * from tab_teste; >> >> C1 C2 >> ---------- ---------------------------------------- >> 1 Linha 1 >> >> SYSTEM:@O11GR2:SQL> >> >> => agora no banco-remoto : >> >> HR:@XE:SQL>select * from hr.regions; >> >> REGION_ID REGION_NAME >> ---------- ------------------------- >> 1 Europe >> 2 Americas >> 3 Asia >> 4 Middle East and Africa >> 99 c=1 >> >> HR:@XE:SQL> >> >> => legal ???? Veja que a sessão "remota" *** enxergou *** o INSERT >> não-comitado no banco-origem, E a transação encerrou suavemente, *** >> GRAVANDO SIM SENHOR *** os DMLs feitos no banco remoto ** E ** no >> banco-origem, cfrme acima, yes ??? SEM problema algum , ***** APESAR **** >> da rotina remota ter feito um acesso ao banco origem, então a sua SUPOSIÇÂO >> de que "o Oracle não permite que durante um processo de gravação seja >> estabelecido a comunicação de A -> B e de B -> A em uma mesma transação" >> simplesmente CAI POR TERRA, ok ???? >> Repito, com certeza das duas uma : OU não deve ser só uma "validação" >> simples que a procedure faz (talvez tenha select for update, talvez faça >> DMLs no banco-origem), OU (como já dito E muito provável) por erro de >> exception ou na aplicação tá dando um ** ERRO ** qualquer, que está sendo >> mascarado e está fazendo algum INSERT ou UPDATE não ter sucesso.... É caso >> de DEBUG, puro e SIMPLES.... >> >> []s >> >> Chiappa >> >> > >