Compartilhando conhecimento com o mundo

Com tecnologia do Blogger.

Pesquisa

Download

Blogger Tricks

Blogger Themes

Visitas

Assuntos

11/19/2013

Descobrindo quem alterou um registro no banco de dados Informix


Imagina um analista querendo saber quem foi que inseriu, alterou ou deletou um determinado registro no Informix? Fique tranquilo pois no banco de dados Informix dá para fazer isso usando um utilitário chamado ONLOG;

Codificação do onlog completa
Usage:  onlog [-l] [-q] [-b] [-d ] [-n ] [-u ]
        [-t ] [-x ]

       -l Display maximum information about each log record
        -q Do not display program header
        -b Display information about logged BLOB pages (-d option only)
        -d Read from tape device
        -n Display the specified log(s)
        -u Display the specified user(s)
        -t Display the specified TBLspace(s)
        -x Display the specified transaction(s)
Descobrir os dados do registro - o registro;
pac_numero          5348
pac_posto           3
pac_ano             2012
nfc_sequencial      6
Vamos descobrir se o registro existe
SQL:   New  Run  Modify  Use-editor  Output  Choose  Save  Info  Drop  Exit
Run the current SQL statements.

----------------------- notas_fiscais@producao ----- Press CTRL-W for Help --------

select * from nf_com_ind
where pac_numero = '5348'
and pac_posto = '3'
and pac_ano = '2012'
and nfc_sequencial = '6'
SQL:   New  Run  Modify  Use-editor  Output  Choose  Save  Info  Drop  Exit
Run the current SQL statements.

----------------------- notas_fiscais@producao ----- Press CTRL-W for Help --------


pac_numero          5348
pac_posto           3
pac_ano             2012
nfc_sequencial      6
nfc_tipo_malote
nfc_tipo            1
con_insc_est        0123456
nfc_natureza_oper   4
nfc_insc_subst      
nfc_cgc             01234567891011
nfc_numero          55053
nfc_serie           1
nfc_data_emissao    01/12/2012
nfc_vlr_total       18104.03
nfc_vlr_icms
nfc_descricao_merc  VARIOS ITENS NA NOTA
reg_codigo
nfc_ufe_codigo      PR
nfc_motiv_generico
nfc_ml_tipo_liber   1
nfc_num_docto_lib
nfc_peso            12732
nfc_situacao        A
nfc_incide_credito
nfc_locado          N
nfc_hr_atualizacao  2012-12-03 16:58

1 row(s) retrieved.
Descobrindo as logical logs de 01/12/2012 a 03/12/2012
cat online.log | grep "Backup Completed"

12/01/12 06:04:44  Logical Log 9395 - Backup Completed
12/02/12 00:34:25  Logical Log 9396 - Backup Completed
12/02/12 01:47:00  Logical Log 9397 - Backup Completed
12/02/12 03:15:10  Logical Log 9398 - Backup Completed
12/02/12 21:33:50  Logical Log 9399 - Backup Completed
12/03/12 04:43:36  Logical Log 9400 - Backup Completed
12/03/12 10:17:22  Logical Log 9401 - Backup Completed
12/03/12 12:53:56  Logical Log 9402 - Backup Completed
12/03/12 18:21:12  Logical Log 9403 - Backup Completed
12/03/12 19:14:04  Logical Log 9404 - Backup Completed
Descobrindo em o valor em hexadecimal do nome da tabela
[s105:informix]$/export/home/informix/scripts> echo "select hex(partnum) from systables where tabname='nf_com_ind'" | dbaccess fronteiras

Database selected.

(expression)

0x00600110

1 row(s) retrieved.
No caso especifico do update desse chamado, vc pode localizar o ROWID da linha atraves de:
select hex(rowid), * from nf_com_ind                                    
where pac_numero = '5348'                                              
and pac_posto = '3'                                                    
and pac_ano = '2012'                                                    
and nfc_sequencial = '6'
Resultado
SQL:   New  Run  Modify  Use-editor  Output  Choose  Save  Info  Drop  Exit
Run the current SQL statements.

----------------------- notas_fiscais@producao ----- Press CTRL-W for Help --------


(expression)        0x088FB940                                          
pac_numero          5348                                                
pac_posto           3                                                  
pac_ano             2012
nfc_sequencial      6
nfc_tipo_malote
nfc_tipo            1
con_insc_est        0123456
nfc_natureza_oper   4
nfc_insc_subst      
nfc_cgc             01234567891011
nfc_numero          55053
nfc_serie           1
nfc_data_emissao    01/12/2012
nfc_vlr_total       18104.03
nfc_vlr_icms
nfc_descricao_merc  VARIOS ITENS NA NOTA
reg_codigo
nfc_ufe_codigo      PR
nfc_motiv_generico
nfc_ml_tipo_liber   1
nfc_num_docto_lib
nfc_peso            12732
nfc_situacao        A
nfc_incide_credito
nfc_locado          N
nfc_hr_atualizacao  2012-12-03 16:58
Pegandos dados da logical log dessa tabela
onlog -n 9395 -l -t 0x00600110 > onlog-9395.out
onlog -n 9396 -l -t 0x00600110 > onlog-9396.out
onlog -n 9397 -l -t 0x00600110 > onlog-9397.out
onlog -n 9398 -l -t 0x00600110 > onlog-9398.out
onlog -n 9399 -l -t 0x00600110 > onlog-9399.out
onlog -n 9400 -l -t 0x00600110 > onlog-9400.out
onlog -n 9401 -l -t 0x00600110 > onlog-9401.out
onlog -n 9402 -l -t 0x00600110 > onlog-9402.out
onlog -n 9403 -l -t 0x00600110 > onlog-9403.out
onlog -n 9404 -l -t 0x00600110 > onlog-9404.out
Observação Importante: Rodando o ONLOG na corrente logical log um lock deve ocorrer e parar todos os usuários que estão rodando;

Considerando as informacoes passadas
table = 0x00600110
ROWID = 0x088FB940
Horario da modificacao = 2012-12-03 16:58
Podemos ver no log 9403 que essa linha foi modificada, veja:
62f50018 56   BEGIN    695      9403 0        12/03/2012 16:58:03      
3375818  danielshimada                                                      
         38000000 bb240100 00000000 00000000 8....$.. ........          
         00000000 00000000 b7020000 00000000 ........ ........          
         567c9d1a 00000000 4b04bd50 00000000 V|...... K..P....          
         86270000 ca823300                   .'....3.                  
addr     len  type     xid      id link                                
62f50240 132  HUPBEF   695      0  62f50200 600110   88fb940  67        
         84000000 00002a00 12012000 00000000 ......*. .. .....          
         00000000 00000000 b7020000 0002f562 ........ .......b          
         637c9d1a 10016000 10016000 40b98f08 c|....`. ..`.@...          
         43400100 00000000 00000000 800e2c5c C@...... ......,\          
         0283b0e4 548d689c 20067a9d d603692b ....T.h.  .z...i+          
         030e59a9 5e484f84 3a0d700d 47d0a101 ..Y.^HO. :.p.G...          
         b6e40510 04a2249c 5c31f510 01001001 ......$. \1......          
         ef55a031 0bcddc04 e0c70140 0c00c001 .U.1.... ...@....          
         00b03100                            ..1.                      
62f502c4 136  HUPAFT   695      0  62f50240 600110   88fb940  72        
         88000000 00002b00 12012000 00000000 ......+. .. .....          
         00000000 00000000 b7020000 4002f562 ........ ....@..b          
         637c9d1a 10016000 10016000 40b98f08 c|....`. ..`.@...          
         48400100 00000000 00000000 800e2c5c H@...... ......,\          
         0283b0e4 548d689c 20069ae0 39d75a79 ....T.h.  ...9.Zy          
         031c057b cd81dd6d 794f843a 0d700d47 ...{...m yO.:.p.G          
         d0a101b6 e4051004 a2249c5c 31f51001 ........ .$.\1...          
         00100120 55a0310b c0410000 4e0c7014 ... U.1. .A..N.p.          
         00c00c00 301003a0                   ....0...
Nesse caso nao foi logado o HPUPDATE pois nao coube na pagina, entao foi dividido em HUPBEF e HUPAFT.
ID da transacao = 695                                                  
Hora da transacao = 12/03/2012 16:58:03                                
usuario = danielshimada                                                    
Modificacao da linha 88fb940 da tabela 600110.

0 comentários:

Enviar um comentário