Ir para conteúdo

Arquivado

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

rodrygossilva

Como executar um bloco de código PL-SQL no Linux no Lado do servidor

Recommended Posts

Pessoal,

 

Bom dia!

 

Estou enfrentando o seguinte problema: Eu sempre executei uma carga através de um procedimento no banco de dados Oracle, esse banco fica em um determinador servidor que não está na minha rede, acesso ele através de uma VPN. Para executar a carga eu acessava uma maquina intermediaria que está na mesma rede do servidor do banco, através do programa Toad. O problema é que não consigo mais acessar essa maquina intermediaria e quando tento executar a carga diretamente da minha maquina, se perder a conexão por 1 segundo a carga da erro. Essa carga é pesada e fica mais de 12 horas rodando.

Alguém poderia me dar uma alternativa? Tem como executar essa carga direto no servidor do banco? Se sim, como?

 

Desde já eu agradeço a atenção de todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que consegue acessar ?

Sql Plus ?

A rotina tem parâmetros ?

 

seria algo como, para executar a

PROCEDURE MINHA_PROCEDURE( P_1 VARCHAR2, P_2 VARCHAR2 )

no Sql Plus rode o seguinte bloco.
 

BEGIN
  MINHA_PROCEDURE('123','ABC');
END;

mas a equipe que cuida do servidor e lhe deu permissão de execução não te ajuda ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

BEGIN

-- Esse é meu bloco de codigo
  -- Carga de pontos em alarme realizada imediatamente antes de enviar os notificadores
  --  e direcionada para as regionais
  BEGIN
    SAGEHIST.P_CARGA_PONTOS_ALARME_COD('COD-SSA');
    SAGEHIST.P_CARGA_PONTOS_ALARME_COD('COS-SSA');
  EXCEPTION
  WHEN NO_DATA_FOUND THEN
    NULL;
  END;
    
  BEGIN
    SAGEHIST.P_SAGE_NOTIFICA_PONTOS_ALARME('COD-SSA');
    SAGEHIST.P_SAGE_NOT_PONTOS_ALARME_RD('COD-SSA');
    SAGEHIST.P_NOT_PONTOS_ALARME_NPL('CAJAZEIRAS II');
    SAGEHIST.P_NOT_PONTOS_ALARME_NPL('CAMAÇARI');
    SAGEHIST.P_NOT_PONTOS_ALARME_NPL('FEDERAÇÃO');
    SAGEHIST.P_NOT_PONTOS_ALARME_NPL('PITUAÇU');
  EXCEPTION
  WHEN NO_DATA_FOUND THEN
    NULL;
  END;
  
  BEGIN
    SAGEHIST.P_SAGE_NOTIFICA_PONTOS_ALARME('COD-BAR');
    SAGEHIST.P_SAGE_NOT_PONTOS_ALARME_RD('COD-BAR');
    SAGEHIST.P_NOT_PONTOS_ALARME_NPL('BARREIRAS');
    SAGEHIST.P_NOT_PONTOS_ALARME_NPL('BOM JESUS DA LAPA');
  EXCEPTION
  WHEN NO_DATA_FOUND THEN
    NULL;
  END;
  
  BEGIN
    SAGEHIST.P_CARGA_PONTOS_ALARME_COD('COD-FSA');
  EXCEPTION
  WHEN NO_DATA_FOUND THEN
    NULL;
  END;
  
  BEGIN
    SAGEHIST.P_SAGE_NOTIFICA_PONTOS_ALARME('COD-FSA');
    SAGEHIST.P_SAGE_NOT_PONTOS_ALARME_RD('COD-FSA');
    SAGEHIST.P_NOT_PONTOS_ALARME_NPL('FEIRA I');  
    SAGEHIST.P_NOT_PONTOS_ALARME_NPL('STO ANTONIO DE JESUS');
    SAGEHIST.P_NOT_PONTOS_ALARME_NPL('TOMBA');
  EXCEPTION
  WHEN NO_DATA_FOUND THEN
    NULL;
  END;
  
  BEGIN
    SAGEHIST.P_SAGE_NOTIFICA_PONTOS_ALARME('COD-JUZ');
    SAGEHIST.P_SAGE_NOT_PONTOS_ALARME_RD('COD-JUZ');
    SAGEHIST.P_NOT_PONTOS_ALARME_NPL('JUAZEIRO');
    SAGEHIST.P_NOT_PONTOS_ALARME_NPL('IRECÊ');
  EXCEPTION
  WHEN NO_DATA_FOUND THEN
    NULL;
  END;
  
  BEGIN
    SAGEHIST.P_CARGA_PONTOS_ALARME_COD('COD-ITB');
  EXCEPTION
  WHEN NO_DATA_FOUND THEN
    NULL;
  END;
  
  BEGIN
    SAGEHIST.P_SAGE_NOTIFICA_PONTOS_ALARME('COD-ITB');
    SAGEHIST.P_SAGE_NOT_PONTOS_ALARME_RD('COD-ITB');
    SAGEHIST.P_NOT_PONTOS_ALARME_NPL('ITABUNA');  
    SAGEHIST.P_NOT_PONTOS_ALARME_NPL('TEIXEIRA DE FREITAS');
    SAGEHIST.P_NOT_PONTOS_ALARME_NPL('EUNÁPOLIS');
  EXCEPTION
  WHEN NO_DATA_FOUND THEN
    NULL;
  END;
  
  BEGIN
    SAGEHIST.P_SAGE_NOTIFICA_PONTOS_ALARME('COD-VTC');
    SAGEHIST.P_SAGE_NOT_PONTOS_ALARME_RD('COD-VTC');
    SAGEHIST.P_NOT_PONTOS_ALARME_NPL('BRUMADO'); 
    SAGEHIST.P_NOT_PONTOS_ALARME_NPL('JEQUIÉ');
    SAGEHIST.P_NOT_PONTOS_ALARME_NPL('VITÓRIA DA CONQUISTA');  
  EXCEPTION
  WHEN NO_DATA_FOUND THEN
    NULL;
  END;
  
  BEGIN
  --SAGEHIST.P_SAGE_NOTIFICA_PONTOS_ALARME('TODOS');
    SAGEHIST.P_SAGE_NOT_PONTOS_ALARME_TODOS;
    SAGEHIST.P_SAGE_NOT_PONTOS_ALARME_RD('TODOS');
    SAGEHIST.P_NOT_PONTOS_ALARME_COS('TODOS');
  EXCEPTION
  WHEN NO_DATA_FOUND THEN
    NULL;
  END;
END;

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 minutos atrás, Motta disse:

O que consegue acessar ?

Sql Plus ?

A rotina tem parâmetros ?

 

seria algo como, para executar a


PROCEDURE MINHA_PROCEDURE( P_1 VARCHAR2, P_2 VARCHAR2 )

no Sql Plus rode o seguinte bloco.
 


BEGIN
  MINHA_PROCEDURE('123','ABC');
END;

mas a equipe que cuida do servidor e lhe deu permissão de execução não te ajuda ?

Motta, obrigado por responder tão prontamente.

 

Então, eu consigo executar esse bloco no sqplus?  A equipe que dar o suporte já tem mais de uma semana tentando resolver o problema na rede, mas ainda não conseguiu  e eu preciso colocar essas cargas para rodar diariamente. Existe jobs programados para executar essas cargas, porém por algum motivo eles não estão completando. Já matei a sessão e mesmo assim ele não normaliza.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dê "broken" ou remova os jobs

Derrube a sessão se for o caso.

Execute a procedure por fora para tentar reproduzir o erro.

Em meus jobs coloco sempre um resumo final porcemail , rode ok ou não.

Compartilhar este post


Link para o post
Compartilhar em outros sites
16 horas atrás, Motta disse:

Dê "broken" ou remova os jobs

Derrube a sessão se for o caso.

Execute a procedure por fora para tentar reproduzir o erro.

Em meus jobs coloco sempre um resumo final porcemail , rode ok ou não.

Mota,

Boa tarde!

 

Já matei as sessões, mas não normalizou. 

 

Existem algum comando para consultar erros na execução de um determinado job?

Qual o bloco de código você utiliza para enviar e-mail. é no EXCEPTION? 

 

Desde já agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

algo assim

 

create or replace PROCEDURE        "JOB_XPTO" IS
--
-- Job que gera ...
--
BEGIN
..BLA BLA BLA
  ENVIA_EMAIL('desenvolvimento@anywhere.com.br',
              'motta@anywhere.com.br',
              'JOB_XPTO',
              'Rodou ok em ' || to_char(Sysdate,'dd/mm/yyyy hh24:mi:ss'));
  --
EXCEPTION
    when OTHERS then
     ENVIA_EMAIL('desenvolvimento@anywhere.com.br',
                  'motta@anywhere.com.br',
                 'JOB_CAC_CONTINGENCIA(MSiga)',
                 'Rodou ERRO em ' || TO_CHAR(SYSDATE,'dd/mm/yyyy hh24:mi:ss') ||  SQLERRM(SQLCODE)); */
END; -- Procedure

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
17 minutos atrás, Motta disse:

algo assim

 


create or replace PROCEDURE        "JOB_XPTO" IS
--
-- Job que gera ...
--
BEGIN
..BLA BLA BLA
  ENVIA_EMAIL('desenvolvimento@anywhere.com.br',
              'motta@anywhere.com.br',
              'JOB_XPTO',
              'Rodou ok em ' || to_char(Sysdate,'dd/mm/yyyy hh24:mi:ss'));
  --
EXCEPTION
    when OTHERS then
     ENVIA_EMAIL('desenvolvimento@anywhere.com.br',
                  'motta@anywhere.com.br',
                 'JOB_CAC_CONTINGENCIA(MSiga)',
                 'Rodou ERRO em ' || TO_CHAR(SYSDATE,'dd/mm/yyyy hh24:mi:ss') ||  SQLERRM(SQLCODE)); */
END; -- Procedure

Show de bola, Motta.

Vou tentar implementar no meu código. Obrigado!

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 04/12/2017 at 14:31, Motta disse:

algo assim

 


create or replace PROCEDURE        "JOB_XPTO" IS
--
-- Job que gera ...
--
BEGIN
..BLA BLA BLA
  ENVIA_EMAIL('desenvolvimento@anywhere.com.br',
              'motta@anywhere.com.br',
              'JOB_XPTO',
              'Rodou ok em ' || to_char(Sysdate,'dd/mm/yyyy hh24:mi:ss'));
  --
EXCEPTION
    when OTHERS then
     ENVIA_EMAIL('desenvolvimento@anywhere.com.br',
                  'motta@anywhere.com.br',
                 'JOB_CAC_CONTINGENCIA(MSiga)',
                 'Rodou ERRO em ' || TO_CHAR(SYSDATE,'dd/mm/yyyy hh24:mi:ss') ||  SQLERRM(SQLCODE)); */
END; -- Procedure

 

 

 

Motta, consegui configurar o envio de e-mail. Muito obrigado!

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.