[firebase-br] Log em uma tabela diferente

Carlos H. Cantu listas em warmboot.com.br
Sáb Dez 17 10:16:40 -03 2016


Certifique-se de que a base de logs está com forced writes off, isso
deve agilizar.

[]s
Carlos H. Cantu
eBook Guia de Migração para o FB 3 - www.firebase.com.br/guiafb3.php
www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br

F> Bom dia Marcos,

F> Fiz as alterações necessárias aqui, deu bastante trabalho, mas ufa, 
F> consegui.

F> O log passou a realizar operações em tabelas externas.

F> No meu computador a principio ficou super rapido, mas coloquei em produção
F> em alguns clientes

F> e ficou muito lento. Pra lançar um item por exemplo tava chegando a levar
F> até 15 segundos, mesmo no

F> servidor.

F> Sera que tem que ajustar alguma coisa ainda? Ou tem algum outro meio de não
F> demorar tanto?

F> Grato



F> -----Mensagem Original----- 
F> From: Marcos Weimer
F> Sent: Wednesday, December 14, 2016 2:14 PM
F> To: FireBase
F> Subject: Re: [firebase-br] Log em uma tabela diferente

F> Oque fazemos aqui é utilizar o mesmo caminho do banco apenas mudando o
F> nome, desta forma obtenho de maneira dinâmica o caminho desta forma:

F>   caminhobancoxml = (select first 1 mon$attachment_name from
F> mon$attachments where mon$attachment_id = current_connection);
F>   caminhobancoxml = replace(upper(caminhobancoxml), '.FDB', '_XML.FDB');

F> e mudo o onexternal para:  on external caminhobancoxml

F> outra possibilidade é utilizar variáveis de contexto. (procure por
F> RDB$SET_CONTEXT e RDB$GET_CONTEXT)

F> existe ainda outra possibilidade que é salvar em uma tabela de parâmetros o
F> caminho do banco de log.




F> -=Ma®©oS=-
F> Marcos R. Weimer
F> Delphi / C# / ASP.NET / PHP / WebServices / Firebird


F> Em 14 de dezembro de 2016 14:03, Firebase <firebase em dominioinf.com.br>
F> escreveu:

>> Bom dia Marcos,
>> Segui a extrutura do seu codigo, e deu certo!
>>
>> Porém estou com uma duvida, para passar o caminho do banco de dados é que
>> esta me complicando.
>>
>> Pelo seu exemplo ele conecta sempre na maquina local, porem vai ter
>> clientes que vão estar na rede,
>> então para cada cliente seria uma conexão diferente.
>>
>> Exemplo: Em um cliente poderá ser 192.168.1.10:c:\sistema\Log.fdb
>>                em outro cliente poderia estar 192.168.0.50:
>> c:\sistema\Log.fdb
>>
>> Tentei passar por parametro, mas dai eu teria que gerar cliente a cliente
>> o que daria muito trabalho.
>>
>> Você conhece alguma forma de recuperar atraves de um select a conexao do
>> banco de dados primario para
>> passar como parametro para o banco de dados de log?
>>
>> Grato
>>
>> -----Mensagem Original----- From: Marcos Weimer
>> Sent: Wednesday, December 14, 2016 1:31 PM
>>
>> To: FireBase
>> Subject: Re: [firebase-br] Log em uma tabela diferente
>>
>> Veja como é feito aqui (estou passando a DDL completa da procedure, assim
>> fica mais facil de entender os parametros de entrada)
>>
>> SET TERM ^ ;
>>
>> create or alter procedure LOG_GRAVAR_COLUNA (
>>    OPERACAO_ID integer,
>>    NOME_COLUNA varchar(31),
>>    OLD_VALUE varchar(5000),
>>    NEW_VALUE varchar(5000))
>> as
>> begin
>>      execute statement (
>>      'INSERT INTO log_campos (ID, OPERACAO_ID, COLUNA, VALOR_ANTERIOR,
>> VALOR_NOVO)
>>      VALUES (GEN_ID(GEN_LOG_CAMPOS, 1), ?, ?, ?, ?);')
>>      (:OPERACAO_ID, :NOME_COLUNA, :OLD_VALUE, :NEW_VALUE)
>>   WITH AUTONOMOUS TRANSACTION
>>   AS USER 'SYSDBA'
>>   PASSWORD 'masterkey'
>>   ROLE 3
>>  on external '127.0.0.1:c:\caminho\banco_log.fdb'; --configurar aqui o
>> caminho do banco
>> end^
>>
>> SET TERM ; ^
>>
>>
>>
>> -=Ma®©oS=-
>> Marcos R. Weimer
>> Delphi / C# / ASP.NET / PHP / WebServices / Firebird
>>
>>
>> Em 14 de dezembro de 2016 11:57, Firebase <firebase em dominioinf.com.br>
>> escreveu:
>>
>> Bom dia Marcos, Obrigado pela resposta.
>>>
>>> Tentei fazer dessa forma:
>>>
>>> CREATE OR ALTER PROCEDURE P_INSERTINTOIBLM$COLUMNLOGTESTE (
>>>  OPERATIONLOG_ID NUMERIC(18, 0),
>>>  COLUMN_NAME VARCHAR(31),
>>>  OLD_VALUE VARCHAR(255),
>>>  NEW_VALUE VARCHAR(255),
>>>  OLD_VALUE_BLOB BLOB SUB_TYPE 0 SEGMENT SIZE 80,
>>>  NEW_VALUE_BLOB BLOB SUB_TYPE 0 SEGMENT SIZE 80
>>> )
>>> AS
>>> BEGIN
>>>   EXECUTE STATEMENT
>>>   'INSERT INTO IBLM$COLUMNLOG (ID, OPERATIONLOG_ID, COLUMN_NAME,
>>> OLD_VALUE, NEW_VALUE, OLD_VALUE_BLOB, NEW_VALUE_BLOB)
>>>    VALUES (GEN_ID(GEN_IBLM$COLUMNLOG_ID, 1), :OPERATIONLOG_ID,
>>> :COLUMN_NAME, :OLD_VALUE, :NEW_VALUE, :OLD_VALUE_BLOB, :NEW_VALUE_BLOB)'
>>>    ON EXTERNAL 'C:\SISTEMAS\Log.fdb'
>>>   AS USER 'SYSDBA'
>>>   PASSWORD 'masterkey'
>>>   INTO :OPERATIONLOG_ID, :COLUMN_NAME, :OLD_VALUE,
>>> :NEW_VALUE,:OLD_VALUE_BLOB,:NEW_VALUE_BLOB;
>>> END
>>> ;
>>>
>>> Porem gera o erro:
>>> Firebird error.unknown ISC error 335544926.
>>> At procedure 'P_INSERTINTOIBLM$COLUMNLOGTESTE' line: 11, col: 4.
>>>
>>> O que posso estar fazendo de errado?
>>>
>>> Grato
>>>
>>> -----Mensagem Original----- From: Marcos Weimer
>>> Sent: Wednesday, December 14, 2016 10:26 AM
>>> To: FireBase
>>> Subject: Re: [firebase-br] Log em uma tabela diferente
>>>
>>>
>>> Aqui salvamos em banco separado (acho que foi isso que vc quer dizer).
>>>
>>> Veja o execute statement on external
>>>
>>> http://firebirdsql.org/refdocs/langrefupd25-psql-execstat.html
>>>
>>>
>>>
>>> -=Ma®©oS=-
>>> Marcos R. Weimer
>>> Delphi / C# / ASP.NET / PHP / WebServices / Firebird
>>>
>>>
>>> Em 14 de dezembro de 2016 10:20, Firebase <firebase em dominioinf.com.br>
>>> escreveu:
>>>
>>> Bom dia a todos,
>>>
>>>>
>>>> Hoje tenho uma rotina no banco de dados utilizando triggers para fazer
>>>> auditoria de tudo que é inserido, editado ou excluido nas tabelas
>>>> no banco de dados.
>>>>
>>>> O problema é que o banco de dados está ficando gigante devido ao acumulo
>>>> desses registros.
>>>>
>>>> Gostaria de saber se haveria possibilidade de esses logs serem gravados
>>>> em
>>>> uma tabela separada do banco de dados?
>>>>
>>>> Exemplo: o banco de dados principal em C:\Sistema\Dados.fdb
>>>>                o banco de dados da auditoria em C:\Sistema\Log.fdb
>>>>
>>>> Grato
>>>>
>>>>
>>>>
>>>> ---
>>>> Este email foi escaneado pelo Avast antivírus.
>>>> https://www.avast.com/antivirus
>>>>
>>>>
>>>> ______________________________________________
>>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>>> Para consultar mensagens antigas: http://www.firebase.com.br/pes
>>>> quisa_lista.html
>>>>
>>>> ______________________________________________
>>>>
>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>> Para consultar mensagens antigas: http://www.firebase.com.br/pes
>>> quisa_lista.html
>>>
>>> ---
>>> Este email foi escaneado pelo Avast antivírus.
>>> https://www.avast.com/antivirus
>>>
>>>
>>> ______________________________________________
>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>> Para consultar mensagens antigas: http://www.firebase.com.br/pes
>>> quisa_lista.html
>>>
>>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://www.firebase.com.br/pes
>> quisa_lista.html
>>
>> ---
>> Este email foi escaneado pelo Avast antivírus.
>> https://www.avast.com/antivirus
>>
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://www.firebase.com.br/pes
>> quisa_lista.html
>>
F> ______________________________________________
F> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
F> Para saber como gerenciar/excluir seu cadastro na lista, use: 
F> http://www.firebase.com.br/fb/artigo.php?id=1107
F> Para consultar mensagens antigas: 
F> http://www.firebase.com.br/pesquisa_lista.html 


F> ---
F> Este email foi escaneado pelo Avast antivírus.
F> https://www.avast.com/antivirus


F> ______________________________________________
F> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
F> Para saber como gerenciar/excluir seu cadastro na lista, use:
F> http://www.firebase.com.br/fb/artigo.php?id=1107
F> Para consultar mensagens antigas:
F> http://www.firebase.com.br/pesquisa_lista.html





Mais detalhes sobre a lista de discussão lista