Hoje reencontrei este erro e, como de costume, já havia esquecido qual era a solução. Por isso fica aqui minha anotação. 🙂
Tive que puxar mais da memória do que qualquer outra coisa, pois todos os links da primeira página do Google tinham apenas o stack do erro mas sem solução. Que na realidade é bem simples:
O erro ocorre devido sessão utilizando shared connection (XA) utilizar DBLink com conexão dedicated. O uso de XA no JDBC é uma configuração do datasource, caso você esteja utilizando weblogic, jboss, tomcat ou outro com suporte a java.
A solução que adotei até hoje consiste setar o “host” do DBLink ou a entrada de TNS utilizada pelo DBLink no arquivo tnsnames do BD de origem para utilizar tipo de conexão “shared” para conexão remota.
Ex Antes: (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=)(PORT=))) (CONNECT_DATA= (SERVICE_NAME=<serviço>) (SERVER=DEDICATED)))
Ex Depois: (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=)(PORT=))) (CONNECT_DATA= (SERVICE_NAME=<serviço>) (SERVER=SHARED)))
Segundo o stackoverflow, pode ser resolvido criando o database link como shared.
Ex: CREATE SHARED DATABASE LINK CONNECT TO bob IDENTIFIED BY “MyNewPasswd1” AUTHENTICATED BY jim IDENTIFIED BY “JimsPass23” USING ‘DB01’;
Na realidade a segunda solução me pareceu muito mais elegante. Mas só percebi que existia depois de já ter resolvido pela primeira abordagem.
Se acontecer novamente, testo da segunda forma e comento aqui. Prometo. 😉
Ah!
Acho que não é necessario mencionar que o BD destino do DBLink precisa estar escutando em algum serviço com suporte a XA, né?
Não é o assunto deste post, então não vou entrar em detalhes. Mas basicamente você precisa setar para um valor diferente de zero os parâmetros: max_shared_servers; shared_servers; max_dispatchers e dispatchers e subir o serviço do dispartcher no listener. Taca no Google aí que essa parte é barbada!
Abraço!
Matheus.








Innovative in everything he does, Cassiano acts as Oracle DBA since 2007 and works everyday with APEX since 2009. Cassiano is a great teammate and is always willing to help someone and learn new things.
Focused on Fusion Middleware and Application technologies, Jack is friend of everyone and always available to reach out the others. Jack has good architecture comprehension and skills to manage solutions on different technologies.
Passionate Database Administrator, experienced as consultant on heterogeneous environments and always trying new ways to do everything. Great as teammate, Rafael is always available to discuss new ideas and innovation.
Professional in the IT area since 2006, working with Oracle applications and database. Solid experience in installation, customization and performance tuning of Fusion Middleware products.
Detail-oriented, Maiquel has almost a scientific approach in all his duties. Maiquel is the GoldenGate guy, acting focused on Integration Solutions. Maiquel also keep studying and feel comfortable about databases.
Database Administrator focused on infrastructure, HA and performance. Matheus is an enthusiastic about PaaS/DBaaS and Cloud Computing.