Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Prezados Amigos, boa noite!
Temos um sistema legado aqui que quase todo sábado apresenta indisponibilidade por uns 20 minutos e depois volta.
Olhando várias coisas possíveis chegamos ao Oracle, porém eu nao sou mto bom de Oracle :P
Bom. Sempre que o sistema "senta" ele apresenta a query abaixo no V$SESSION_LONGOPS, que pelo que eu sei foi disparada pela parametrização do optimizer_dynamic_sampling (que ao ser consultado da 2, ou seja padrao). também são apresentados uma série de call dbms_stats.gather_database_stats_job_proc ( ), assim como um Table scan na tabela AVL.OSC_EQUIPE_ASS que esta atualmente com 19 milhões de linhas.
A pergunta qual seria o melhor caminho? Posso passar isso pra zero? devo expurgar parte dos 19 milhões de registros? Tem como eu impedir ele de rodar sabado e só rodar no domingo fora do expediente?
/ SQL Analyze(1) / select /+ full(t) no_parallel(t) no_parallel_index(t) dbms_stats cursor_sharing_exact use_weak_name_resl dynamic_sampling(0) no_monitoring no_substrb_pad /to_char(count("DATA_ENVIO_ORDEM")),to_char(substrb(dump(min("DATA_ENVIO_ORDEM"),16,0,32),1,120)),to_char(substrb(dump(max("DATA_ENVIO_ORDEM"),16,0,32),1,120)),to_char(count("DATA_RECEBIMENTO_CELULAR")),to_char(substrb(dump(min("DATA_RECEBIMENTO_CELULAR"),16,0,32),1,120)),to_char(substrb(dump(max("DATA_RECEBIMENTO_CELULAR"),16,0,32),1,120)),to_char(count("DATA_EXECUCAO_CAMPO")),to_char(substrb(dump(min("DATA_EXECUCAO_CAMPO"),16,0,32),1,120)),to_char(substrb(dump(max("DATA_EXECUCAO_CAMPO"),16,0,32),1,120)),to_char(count("DATA_DIGITACAO_RETORNO")),to_char(substrb(dump(min("DATA_DIGITACAO_RETORNO"),16,0,32),1,120)),to_char(substrb(dump(max("DATA_DIGITACAO_RETORNO"),16,0,32),1,120)),to_char(count("DATA_TRANSMISSAO_RETORNO")),to_char(substrb(dump(min("DATA_TRANSMISSAO_RETORNO"),16,0,32),1,120)),to_char(substrb(d
A consulta inteira é a abaixo.
/ SQL Analyze(1) / select /+ full(t) no_parallel(t) no_parallel_index(t) dbms_stats cursor_sharing_exact use_weak_name_resl dynamic_sampling(0) no_monitoring no_substrb_pad /to_char(count("DATA_ENVIO_ORDEM")),to_char(substrb(dump(min("DATA_ENVIO_ORDEM"),16,0,32),1,120)),to_char(substrb(dump(max("DATA_ENVIO_ORDEM"),16,0,32),1,120)),to_char(count("DATA_RECEBIMENTO_CELULAR")),to_char(substrb(dump(min("DATA_RECEBIMENTO_CELULAR"),16,0,32),1,120)),to_char(substrb(dump(max("DATA_RECEBIMENTO_CELULAR"),16,0,32),1,120)),to_char(count("DATA_EXECUCAO_CAMPO")),to_char(substrb(dump(min("DATA_EXECUCAO_CAMPO"),16,0,32),1,120)),to_char(substrb(dump(max("DATA_EXECUCAO_CAMPO"),16,0,32),1,120)),to_char(count("DATA_DIGITACAO_RETORNO")),to_char(substrb(dump(min("DATA_DIGITACAO_RETORNO"),16,0,32),1,120)),to_char(substrb(dump(max("DATA_DIGITACAO_RETORNO"),16,0,32),1,120)),to_char(count("DATA_TRANSMISSAO_RETORNO")),to_char(substrb(dump(min("DATA_TRANSMISSAO_RETORNO"),16,0,32),1,120)),to_char(substrb(dump(max("DATA_TRANSMISSAO_RETORNO"),16,0,32),1,120)),to_char(count("ID_SISTEMA_CLIENTE")),to_char(substrb(dump(min("ID_SISTEMA_CLIENTE"),16,0,32),1,120)),to_char(substrb(dump(max("ID_SISTEMA_CLIENTE"),16,0,32),1,120)),to_char(count("CORR_VISITA")),to_char(substrb(dump(min("CORR_VISITA"),16,0,32),1,120)),to_char(substrb(dump(max("CORR_VISITA"),16,0,32),1,120)),to_char(count("ID_USER_ASSOCIACAO")),to_char(substrb(dump(min("ID_USER_ASSOCIACAO"),16,0,32),1,120)),to_char(substrb(dump(max("ID_USER_ASSOCIACAO"),16,0,32),1,120)),to_char(count("DATA_ASSOCIACAO")),to_char(substrb(dump(min("DATA_ASSOCIACAO"),16,0,32),1,120)),to_char(substrb(dump(max("DATA_ASSOCIACAO"),16,0,32),1,120)),to_char(count("ID_USER_DESASSOCIACAO")),to_char(substrb(dump(min("ID_USER_DESASSOCIACAO"),16,0,32),1,120)),to_char(substrb(dump(max("ID_USER_DESASSOCIACAO"),16,0,32),1,120)),to_char(count("DATA_DESASSOCIACAO")),to_char(substrb(dump(min("DATA_DESASSOCIACAO"),16,0,32),1,120)),to_char(substrb(dump(max("DATA_DESASSOCIACAO"),16,0,32),1,120)),to_char(count("ID_EQUIPE_ASS")),to_char(substrb(dump(min("ID_EQUIPE_ASS"),16,0,32),1,120)),to_char(substrb(dump(max("ID_EQUIPE_ASS"),16,0,32),1,120)),to_char(count("ID_EQUIPE")),to_char(substrb(dump(min("ID_EQUIPE"),16,0,32),1,120)),to_char(substrb(dump(max("ID_EQUIPE"),16,0,32),1,120)),to_char(count("NUM_ORDEM")),to_char(substrb(dump(min("NUM_ORDEM"),16,0,32),1,120)),to_char(substrb(dump(max("NUM_ORDEM"),16,0,32),1,120)),to_char(count("OBS_ORDEM")),to_char(substrb(dump(min("OBS_ORDEM"),16,0,32),1,120)),to_char(substrb(dump(max("OBS_ORDEM"),16,0,32),1,120)),to_char(count("OBS_EXECUTOR")),to_char(substrb(dump(min("OBS_EXECUTOR"),16,0,32),1,120)),to_char(substrb(dump(max("OBS_EXECUTOR"),16,0,32),1,120)),to_char(count("ESTADO_ORDEM")),to_char(substrb(dump(min("ESTADO_ORDEM"),16,0,32),1,120)),to_char(substrb(dump(max("ESTADO_ORDEM"),16,0,32),1,120)),to_char(count("ID_USER")),to_char(substrb(dump(min("ID_USER"),16,0,32),1,120)),to_char(substrb(dump(max("ID_USER"),16,0,32),1,120)),to_char(count("DATA_ASS")),to_char(substrb(dump(min("DATA_ASS"),16,0,32),1,120)),to_char(substrb(dump(max("DATA_ASS"),16,0,32),1,120)),to_char(count("STATUS")),to_char(substrb(dump(min("STATUS"),16,0,32),1,120)),to_char(substrb(dump(max("STATUS"),16,0,32),1,120)),to_char(count("NUM_CLIENTE")),to_char(substrb(dump(min("NUM_CLIENTE"),16,0,32),1,120)),to_char(substrb(dump(max("NUM_CLIENTE"),16,0,32),1,120)),to_char(count("SUCURSAL")),to_char(substrb(dump(min("SUCURSAL"),16,0,32),1,120)),to_char(substrb(dump(max("SUCURSAL"),16,0,32),1,120)),to_char(count("MUNICIPIO")),to_char(substrb(dump(min("MUNICIPIO"),16,0,32),1,120)),to_char(substrb(dump(max("MUNICIPIO"),16,0,32),1,120)),to_char(count("EMPREITEIRA")),to_char(substrb(dump(min("EMPREITEIRA"),16,0,32),1,120)),to_char(substrb(dump(max("EMPREITEIRA"),16,0,32),1,120)),to_char(count("TIPO_SERVICO")),to_char(substrb(dump(min("TIPO_SERVICO"),16,0,32),1,120)),to_char(substrb(dump(max("TIPO_SERVICO"),16,0,32),1,120)),to_char(count("ID_RETORNO")),to_char(substrb(dump(min("ID_RETORNO"),16,0,32),1,120)),to_char(substrb(dump(max("ID_RETORNO"),16,0,32),1,120)),to_char(count("ESTADO_OLD")),to_char(substrb(dump(min("ESTADO_OLD"),16,0,32),1,120)),to_char(substrb(dump(max("ESTADO_OLD"),16,0,32),1,120)),to_char(count("TIPO_ORDEM")),to_char(substrb(dump(min("TIPO_ORDEM"),16,0,32),1,120)),to_char(substrb(dump(max("TIPO_ORDEM"),16,0,32),1,120)),to_char(count("DATA_INGRESSO_ORDEM")),to_char(substrb(dump(min("DATA_INGRESSO_ORDEM"),16,0,32),1,120)),to_char(substrb(dump(max("DATA_INGRESSO_ORDEM"),16,0,32),1,120)) from "AVL"."OSC_EQUIPE_ASS" t / NDV,NIL,NIL,NDV,NIL,NIL,NDV,NIL,NIL,NDV,NIL,NIL,NDV,NIL,NIL,NDV,NIL,NIL,NDV,NIL,NIL,NDV,NIL,NIL,NDV,NIL,NIL,NDV,NIL,NIL,NDV,NIL,NIL,ACL,NIL,NIL,NDV,NIL,NIL,NDV,NIL,NIL,NDV,NIL,NIL,NDV,NIL,NIL,NDV,NIL,NIL,NDV,NIL,NIL,NDV,NIL,NIL,NDV,NIL,NIL,NDV,NIL,NIL,NDV,NIL,NIL,NDV,NIL,NIL,NDV,NIL,NIL,NDV,NIL,NIL,NDV,NIL,NIL,NDV,NIL,NIL,NDV,NIL,NIL,NDV,NIL,NIL/
https://docs.oracle.com/cd/B19306_01/server.102/b14237/statviews_1086.htm
A query é disparada por algum SCHEDULLE (JOB) ? Parece-me ser isto.
Talvez seja o caso de rodar o JOB no dia de máquina ociosa mesmo.
Existem sqls que dado sua natureza tem pouca chance de otimização , a solução passa muita vezes em executá-la em horários alternativos.
Identa a sql por favor.