Como debugar um erro no banco

Versão para impressãoEnviar para amigoVersão PDF

Para certas situações as vezes é necessário que o DBA vá um pouco mais a fundo para depurar problemas no banco. Este tipo de situação vai desde acessos indevidos até erros em SQLs.

No caso de erros em SQLs, trata-se de situações onde o desenvolvedor por algum motivo não tem como depurar a aplicação para descobrir a linha de código com erro ou por a aplicação ser de terceiros onde o cliente não tem acesso aos fontes.

  • xtrace
    Ler artigo sobre xtrace
  • onmode -I <nmr_erro> <sesid>
    Inclui um trap para gerar um Assert Failed quando ocorrer tal erro.
    Exemplo:onmode -I -271 Ira gerar um AF quando nao puder incluir um registro em uma tabela (Could not insert new row into the table)
  • onmode -I
    Desativa todos os traps.
  • onmode -X profile VP# ou kill -6 no #proc do VP (comando não documentado)
    Gera profile do processo
    HP-UX: prof -m mon<PID>.out $INFORMIXDIR/bin/oninit
    Linux: gprof -p gmon<PID>.out $INFORMIXDIR/bin/oninit
  • onmode -X stack VP# ou kill -7 no #proc do VP (comando não documentado)
    Gera stack do processo
    Observação: Executar kill (acima) uma vez, ativa. executar novamente , desativa.
  • onmode -A 1 / onmode -A 0 / AFDEBUG=1
    Pausa (hang) o banco quando algum Assert Failed ocorre, permitindo assim pegar todas as informações do momento com o onstat
  • onmode -i
    Volta o banco em atividade apos parar devido um AFDEBUG.
    Exemplo para debugar um erro de dead lock
      # rever no onconfig os parametros de geracao de AF (DEBUG)
       $ onmode -A 1
       $ onmode -I 243 # para deadlock
      #...aguardar erro acontecer (monitorar o log do banco pois o banco ira ficar suspenso)
       $ onstat -o > shared.memory.dump
       $ onstat -g all > onstat.g_all.txt
       $ onstat -a     > onstat.a.txt
       $ onstat -g ckp > onstat.g_ckp.txt
       $ onstat -g stk all > onstat.g_stk_all.txt
       $ onmode -i
       $ onmode -I
       $ onmode -A 0
    

  • Todos os Assert Faileds (AFs) gerados, são parametrizados no ONCONFIG através dos parametros DUMP*
  • Os erros mais comuns para debugar erros em aplicação são:
    - 143 deadlock detected.
    - 258 System error - invalid statement id received by the sqlexec process.
    - 239 Could not insert new row - duplicate value in a UNIQUE INDEX column.
    - 271 Could not insert new row into the table.
    - 534 Could not insert new row into table, table is locked.
    - 535 Already in transaction.
0
Ainda não votado
Sua avaliação: Nenhum

Comentar

O conteúdo deste campo é privado não será exibido ao público.
  • Endereços de páginas de internet e emails viram links automaticamente.
  • Você pode usar tags BBCode no texto.
  • Tags HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>

Mais informações sobre as opções de formatação

CAPTCHA
Este teste é para bloquear programas automatizados e previnir spams
CAPTCHA de Imagem
Digite o texto exibido na imagem.