- Este tópico contém 4 respostas, 2 vozes e foi atualizado pela última vez 15 anos, 1 mês atrás por
Anônimo.
-
AutorPosts
-
9 de fevereiro de 2011 às 10:25 pm #98195
Anônimo
Caros ,
estou criando uma procedure que execute uma query que tem um tempo um pouco longo em sua execução e gostaria de saber se isto influencia em sua não execução na procedure ? se sim , tem como configura o tempo ou algo assim para que esta procedure execute ?
Grato
9 de fevereiro de 2011 às 11:09 pm #98199fsitja
ParticipanteOlá,
[quote=”lhenriq”:1xp0hr0k]
… tem como configura o tempo …
[/quote]Se o SQL está com tempo de execução alto ele vai impactar o procedimento. O que dá para fazer é tentar otimizá-lo, modificando o SQL.
Se você puder postar por favor a estrutura simplificada de suas tabelas, só com aquilo que é necessário para entendermos o problema, e mais uns dados de exemplo com uma explicação do que deve ser obtido pela query, dá para ajudar você na tarefa.
Se quiser falar em linhas gerais sobre o que a procedure precisa fazer, talvez dê para melhorar ela para atender de forma mais adequada à necessidade da transação.
10 de fevereiro de 2011 às 12:06 am #98203Anônimo
Desde já agradeço por sua resposta ..
eu criei um index para minimizar o tempo, mas, mesmo assim ainda leva em torno de 1:40min para responder.. é uma select que envove varias tabelas com muitos registros .. segue a select :INSERT INTO CCON_ABERTA_UNICA_2_MESES
(
CN_ID_ASSINATURA,
NEGOCIO,
DT_ENTRADA,
MES_ENTRADA,
GRUPO_ABERT_CCON,
MOTIVO_ABERT_CCON,
END_COD,
END_CEP_NUM,
END_TP_IMOV,
LOGR_COD,
END_LOGR_NRO,
PRD_SEQ,
DOM_COD
) SELECT A.CN_ID_ASSINATURA,
B.CA_GRP_NEGOCIO NEGOCIO,
TRUNC (B.DT_ENTRADA) DT_ENTRADA,
TO_CHAR (B.DT_ENTRADA,’YYMM’) MES_ENTRADA,
E.AN_DESCR GRUPO_ABERT_CCON,
F.AN_DESCR MOTIVO_ABERT_CCON,
C.END_COD,
D.END_CEP_NUM,
D.END_TP_IMOV,
D.LOGR_COD,
D.END_LOGR_NRO,
C.PRD_SEQ,
C.DOM_COD
FROM ( SELECT * FROM INT_GCA ) A,
INT_GCA_NEGOCIACAO B,
INT_BIL_ASS_ENDERECO C,
TVA_ENDERECO D,
INT_GCA_ADM_GRP_MOTIVO_ABERT E,
INT_GCA_ADM_MOTIVO_ABERT F
WHERE A.CN_ID_ASSINATURA = B.CN_ID_ASSINATURA
AND A.CN_SEQ_NEG = B.CN_SEQ_NEG
AND A.CN_ID_ASSINATURA = C.CN_ID_ASSINATURA
AND B.CA_GRP_MOTIVO_ABERT = E.CA_GRP_MOTIVO_ABERT
AND B.CA_MOTIVO_ABERT = F.CA_MOTIVO_ABERT
AND C.CA_TP_END_ASS = ‘S’
AND C.CN_STS_ASS_ENDERECO = ‘1’
AND C.END_COD = D.END_COD;10 de fevereiro de 2011 às 5:01 pm #98206fsitja
ParticipanteA query está bastante sucinta, não tem muito o que mexer mesmo. O melhor seria analisar o explain plan e verificar o plano de acesso das tabelas.
Tente fazer:
explain plan for select ... {todo seu select aqui}
E depois poste o resultado de
select * from table(dbms_xplan.display);
Quando for postar trecho de código coloque entre tags [code ] e [/code] para ficar mais fácil de ler, por favor.
Para vermos se as tabelas estão sendo acessadas por índice ou não por exemplo.
Por outro lado, também pode ser problema de puro volume de dados mesmo. Quantas linhas retornam nesse SQL?
A tabela de destino tem muitos índices ou triggers? Talvez fosse conveniente desabilitá-los para rodar o insert e depois ativar de volta, pode ser que melhore bastante o desempenho.
10 de fevereiro de 2011 às 7:56 pm #98216Anônimo
Amigo , te agradeço muito pelo seu interesse em me ajudar e consegui usar suas informações. Achei onde estava ocorrendo o problema, porem, ainda não tenho solução para resolver por completo. Mas já consegui que a select execute. O problema esta sendo no comando execute immediate(‘ ‘) dentro da procedure :
veja eu preciso colocar um nome padrão que muda todo mês – exemplo as tabelas aqui possuem AAMM_nometabela onde AA é o Ano 11 e MM o mês 02 e na virada a tabela ganha o novo nome 1103 refer ao novo mês e assim por diante… sendo assim, eu inseri uma variável v_ano_mes que pega o valor do nome da tabela para que eu substitua na query e estava usando o execute immediate(‘ para inserir ‘||v_ano_mes||’) e isto estava causando meu erro na hora da execução… desculpe pela duvida, sou novo na programação PL e estou apanhando um pouco… Grato desde já por tudo! Se quiser eu insiro o exemplo de como estou criando a procedure…
-
AutorPosts
- Você deve fazer login para responder a este tópico.