Rede de Interrupção Causas Stored Procedure consulta através de DB link para pendurar para sempre

StackOverflow https://stackoverflow.com/questions/331114

Pergunta

Uma série de procedimentos armazenados Apoio consultar bancos de dados remotos através de uma WAN. A rede de vez em quando vai para baixo, mas o pior que já aconteceu foi os procedimentos falhou e teria que ser reiniciado.

As semanas último par é tomado um rumo sinistro. Em vez de deixar os procedimentos pendurar em um estado estranho bloqueado. Eles não podem ser mortos dentro da Oracle e enquanto eles existem qualquer tentativa de executar outras cópias do procedimento irá travar também. A única solução que eu encontrei é para matar os procedimentos ofensivos com um "kill -9" do OS. Alguns desses procedimentos não foram alteradas durante meses, até anos, então eu suspeito que a causa raiz na configuração DB ou DB.

Qualquer um tem alguma idéia do que podemos fazer, quer resolver o problema? Ou será que a PL / SQL têm um mecanismo de limite de tempo que posso acrescentar ao código para que eu possa criar uma exceção que eu posso lidar com programaticamente?

Foi útil?

Solução 2

Nós nunca foram capazes de determinar o que causou isso aconteça. Acreditamos que foi um defeito no patch cumulativo Outubro de 2008. Talvez um remendo mais tarde como fixas. Isso não aconteceu por alguns meses (e tivemos algumas falhas de rede) por isso espero que o problema desapareceu.

Outras dicas

Qual é a versão do banco de dados? Eles estão presos em execução SQL ou PL / SQL? Alguém acrescentou o tratamento de exceção para as rotinas recentemente? Lembro-me em 9iR2, fomos informados que, em vez ou levantar uma exceção para a rotina de chamada, fomos capturar todas as exceções e continuar correndo (basicamente tentar executar o processo de todos os itens no emprego, mesmo que alguns não). Nós inevitavelmente tinham empregos ficar preso em um loop infinito com SQLs falhando, ser pego pelo manipulador de exceção e tentar novamente. E não poderia ser morto como quando os outros também chamou a 'sua sessão foi morto' exceção. Eu acho que o último mudou em 10g para que exceção não ser pego.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top