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 existeSQL: 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/2012cat 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'
ResultadoSQL: 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 tabelaonlog -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