Guia do Usurio FBScanner Verso 3.0.67 ndice Guia do Usurio FBScanner ........................................................................................................................... 1 O que o FBScanner? ................................................................................................................................... 2 Problemas que o FBScanner ajuda a resolver ........................................................................................... 2 Impacto no Desempenho .......................................................................................................................... 3 Como configurar o FBScanner? ..................................................................................................................... 4 Como configurar o FBScanner para um computador local? ......................................................................... 6 Como registrar o FBScanner? ........................................................................................................................ 8 Como configurar o FBScanner para um computador remoto? ................................................................... 10 Como configurar o Log? .............................................................................................................................. 13 Log em arquivos texto ............................................................................................................................. 13 Exemplo de log em arquivo texto ........................................................................................................... 14 Log em banco de dados Firebird ............................................................................................................. 16 Marcadores de transaes ...................................................................................................................... 18 Utilizando Embedded Firebird 2.5 para log de SQL ................................................................................ 18 Como analisar o Log do FBScanner? ........................................................................................................... 20 Como rastrear o erro de INET 10054, desconexes e falhas de tentativas de login? ................................ 25 Backup/Restore e carga de massa de dados ............................................................................................... 26 Monitoramento em tempo real: FBScanner Viewer ................................................................................... 27 Tags ......................................................................................................................................................... 29 O Menu do FBScanner Viewer ................................................................................................................ 30 Server .................................................................................................................................................. 30 Connections ......................................................................................................................................... 31 Kill ........................................................................................................................................................ 32 Transactions ........................................................................................................................................ 33 Tools .................................................................................................................................................... 33 Estrutura do Log SQL ................................................................................................................................... 35 Estrutura Lgica ................................................................................................................................... 35 Matriz de Caractersticas do FBScanner ...................................................................................................... 37 Suporte e como comprar ............................................................................................................................ 42
IBSurgeon 2002-2012
2 O que o FBScanner?
O que o FBScanner? FBScanner (Firebird Scanner) uma ferramenta para monitorar e visualizar todo trfego entre servidores Firebird/Interbase e suas aplicaes clientes. Com ela possvel visualizar em tempo real todas as atividades dos clientes conectados: Conexes (IP/Nome, durao, carga da CPU), Consultas/Queries (texto, status, parmetros). Transaes (com parmetros). O FBScanner pode armazenar em forma de log todo trafego de SQL em um arquivo texto ou em um banco Firebird externo, incluindo o mdulo FBScanner LogAnalyzer para analisar a performance dos comandos SQL. O FBScanner pode ser utilizado para analisar detalhadamente aplicaes para banco de dados, monitorar atividades dos usurios, gerenciar as conexes a base de dados (incluindo desconexo de clientes nas arquiteturas Classic, SuperClassic e SuperServer). tambm ideal na soluo de problemas como erros INET, bem como auditar aplicaes existentes e ajustes de desempenho. O FBScanner suporta o Firebird (V1.x, V2.0, V2.1 e V.2.5), InterBase (V4.0 at 2009/XE). uma ferramenta muito til para analisar bancos de dados em produo, especialmente se a aplicao foi desenvolvida por um terceiro e no existe cdigo fonte disponvel. O FBScanner transparente medida que a aplicao de banco de dados est conectada, e no h necessidade de mudanas na aplicao, banco de dados, cdigo fonte, lgica ou configurao. Problemas que o FBScanner ajuda a resolver Monitoramento de conexes em tempo real. O FBScanner mostra todas as conexes ao servidor de banco de dados selecionado: IP/DNS dos clientes conectados, bancos de dados e tempo de conexo. Monitoramento em tempo real de consultas SQL. Para cada conexo, o FBScanner mostra todas as consultas SQL em execuo com todos os seus parmetros de transao. Deteco da conexo mais antiga e da transao ativa mais antiga para anlise de controle transacional ineficiente ou com configurao incorreta de transaes, ou apontar os usurios que esto com um comportamento que pode afetar a performance. Desconexo de clientes. Verifica se as desconexes esto ocorrendo de forma correta. O FBScanner tambm pode ser utilizado para desconectar usurios com o objetivo de executar manuteno ou atualizao do banco de dados. O FBScanner permite que aplicaes ou usurios especficos sejam roteados, possibilitando uma viso detalhada e especifica de sua conexo. Registro de consultas SQL. Por depurao ou por segurana, o FBScanner pode armazenar as informaes de trafego de um banco de dados selecionado para analise posterior. No FBScanner est incluso a ferramenta LogAnalyzer para encontrar consultas mal construdas ou com planos ineficientes.
IBSurgeon 2002-2012
3 O que o FBScanner? Impacto no Desempenho O FBScanner no altera nada na comunicao e nos comandos SQL, funcionando simplesmente como um proxy de forma transparente, logo todas as aplicaes funcionaro normalmente. O FBScanner consome aproximadamente de 50 a 150 MB de memria (entre 30 a 100 usurios ativos), e poder reduzir entre 5 a 10% o desempenho do banco de dados.
IBSurgeon 2002-2012
4 Como configurar o FBScanner? Como configurar o FBScanner?
Execute o programa Setup.exe
Clique em I agree para License Agreement, e ento clique Next. Neste passo necessrio escolher entre a instalao completa ou apenas o Viewer (Visualizador).
IBSurgeon 2002-2012
5 Como configurar o FBScanner? Selecione a pasta onde instalar o FBScanner.
Clique em Next nas prximas telas, e espere alguns segundos. Se estiver utilizando Windows 7/Vista, Windows Server 2008 ou verso mais recente, uma caixa de dilogo de sistema surgir com uma requisio de permisso para o programa de instalao do FBScanner. Clique no boto apropriado para permitir esta ao. Aps o encerramento do assistente de instalao do FBScanner, ser iniciado o assistente de configurao do FBScanner. Ele tambm pode ser iniciado manualmente a partir do menu Iniciar\Firebird Scanner\FBScanner Settings.
IBSurgeon 2002-2012
6 Como configurar o FBScanner para um computador local? Como configurar o FBScanner para um computador local? Clicar no menu FBScanner Configuration para configurar o FBScanner a partir do menu Iniciar (pasta Firebird Scanner). Esta ferramenta ir auxiliar na configurao dos parmetros do FBScanner, tanto do modo bsico como do avanado. Os parmetros da configurao bsica esto dispostos na tela principal do FBScanner Configuration. Ele procura no registro do Windows por servios do Firebird instalados que so visualizados na grade. Por padro, o Firebird usa a porta 3050 para conexes atravs da rede. O FBScanner trabalha de forma transparente como um proxy TCP ele redireciona todo trafego SQL entre os clientes e servidor Firebird. O FBScanner oferece a possibilidade de mudar a porta do Firebird para a 3053 e assim assumir a porta 3050 para sua prpria instncia. O FBScanner verifica o uso destas portas e se alguma delas estiver sendo utilizada por outro software, emitir um aviso com o ttulo em vermelho Port used, prximo caixa de texto Port. O diagrama em verde no centro da tela principal do FBScanner Configuration mostra de forma simples como as aplicaes clientes tero o seu trfego SQL monitorado. Na figura abaixo podemos perceber que o FBScanner encontrou a instncia do Firebird 1.5, e oferece a possibilidade de mudar sua porta para 3053 para que o prprio FBScanner assuma a porta 3050. Com este cenrio padro, ser possvel o mximo de compatibilidade com as aplicaes clientes Firebird existentes (aplicaes de usurio final).
IBSurgeon 2002-2012
7 Como configurar o FBScanner para um computador local? Para aprovar as mudanas, clique Ok, ou para cancelar clique Cancel. Importante! Se as configuraes do FBScanner foram alteradas, o servio ser reiniciado e todas as conexes ativas sero desconectadas! necessrio ser cuidadoso quando mudar as configuraes do FBScanner em ambiente de produo. O FBScanner ir sempre solicitar permisso para reiniciar, tenha cuidado ao tomar esta deciso.
IBSurgeon 2002-2012
8 Como registrar o FBScanner? Como registrar o FBScanner? Execute a ferramenta FBScanner Configuration e clique no boto Registration (no canto esquerdo superior da pgina principal).
Clique em New Registration:
Preencha com o nome, empresa, e-mail e clique no boto OK. A caixa de mensagem abaixo ir aparecer:
Acesse a pasta onde o FBScanner est instalado (por padro: C:\Arquivos de Programas\IBSurgeon\Firebird Scanner) e envie o arquivo FBScanner_RegInfo.xml para o e-mail activate@ib-aid.com. Em breve, voc receber uma resposta com o mesmo arquivo anexado, porm neste momento ele ter a chave de registro necessria. Neste momento necessrio substituir o arquivo existente FBScanner_RegInfo.xml pelo que chegou anexado ao email de resposta.
IBSurgeon 2002-2012
9 Como registrar o FBScanner? Para aplicar o registro imediatamente, reinicialize o FBScanner (Aviso! Todas as conexes existentes ao Firebird atravs do FBScanner sero desconectadas) ou espere at as 00:00 O servio do FBScanner ir ler novamente o FBScanner_RegInfo.xml e aplicar a nova configurao de registro. Aps esta operao possvel verificar o status do registro:
IBSurgeon 2002-2012
10 Como configurar o FBScanner para um computador remoto? Como configurar o FBScanner para um computador remoto? O FBScanner pode rotear o trafego SQL como um proxy local, mas tambm pode fazer isso para outro computador. Para entender as diferenas e descobrir as consequncias, vamos olhar em detalhes este processo. A configurao bsica (e padro) do FBScanner implica que seja executado no mesmo computador onde o Firebird est rodando, e processe todo trafego SQL que venha pela porta padro.
Algumas vezes no conveniente configurar o FBScanner para processar todas as requisies, por exemplo, nos casos abaixo: - Apenas algumas estaes de trabalhos precisam ser monitoradas - Apenas uma determinada aplicao ou funcionalidade especfica necessita de monitoramento e aprimoramento de performance e /ou comportamento - Desenvolvedores precisam verificar alguns cdigos SQL em uma base de dados de produo gravando o log com as estatsticas de execuo, planos, etc. - Carga muito alta (muitas estaes de trabalho). No caso do FBScanner estar consumindo muitos recursos no servidor principal, melhor mov-lo para um servidor dedicado (bem como o log do FBScanner, se estiver habilitado, para um computador dedicado). - Servidor Linux. Se o Firebird executa no Linux, possvel rotear o trafego SQL atravs de uma instncia remota do FBScanner no Windows. Neste caso, a melhor opo configurar o FBScanner em um computador remoto e passar somente parte do trfego SQL atravs dele. Geralmente possvel a analise do trafego SQL sem necessariamente de mudar a porta ou outra configurao no servidor o nico ajuste necessrio ser o nome do host nos parmetros de conexo nas aplicaes clientes. Um dos usos frequentes da instancia remota do FBScanner para sua utilizao como um console de depurao para desenvolvedores, desta forma, eles podem acompanhar em tempo real (com o FBScanner LogViewer) ou aps um perodo de monitoramento (com o FBScanner LogAnalyzer) todos os SQLs entre o computador e o servidor Firebird.
Firebird Servidor (Windows) FBScanner Clientes Firebird (Aplicaes), conectados via TCP
3053 3050
IBSurgeon 2002-2012
11 Como configurar o FBScanner para um computador remoto? Na figura abaixo, podemos perceber como est disposta esta arquitetura:
De volta configurao, possvel perceber como fcil utilizar o FBScanner para rotear o trafego SQL em um computador remoto. Na parte inferior da tela principal do FBScanner Configuration possvel perceber as configuraes padres (para Firebird 1.5, no exemplo):
Para configurar o FBScanner para rotear o trafego SQL ao servidor Firebird remoto, necessrio mudar o Server Type de Local para Remote. Essa operao ir mudar a tela principal da ferramenta de configurao. Primeiramente, necessrio especificar o nome (ou IP) do computador com a instncia do Firebird e a porta onde est sendo utilizado Esta informao deve ser inserida na caixa de texto Interface. Em seguida necessrio especificar a verso do Firebird no nosso exemplo o Firebird 1.5.
Firebird Servidor FBScanner Clientes Firebird (Aplicaes), conectados via TCP
3050 3050 Computador1
IBSurgeon 2002-2012
12 Como configurar o FBScanner para um computador remoto? Na configurao da instancia do FBScanner, no item Interface, existe uma lista de adaptadores de rede encontrados no computador. Se for necessrio ligar o FBScanner a um adaptador especifico ou desabilitar conexes a partir de um adaptador de rede, selecione um dos adaptadores na lista drop- down. Por padro, o FBScanner ir aceitar requisies de clientes Firebird a partir de todos os adaptadores de rede (All). Abaixo temos o exemplo de configurao do FBScanner para rotear o trafego SQL a uma instancia remota do Firebird, que reside no computador myserver1 e por padro utiliza a porta 3050.
Clique Ok para confirmar as novas configuraes, e o FBScanner ir rotear requisies SQL ao Firebird remoto. Importante! Se for necessrio passar o trafego SQL de aplicaes clientes Firebird atravs do FBScanner remoto, precisa-se mudar os parmetros da string de conexo apropriadamente. Por exemplo, se originalmente as aplicaes clientes fazem a conexo com a string myserver1:C:\Database\data.fdb, para que o trafego SQL seja roteado pelo FBScanner, neste exemplo, ser necessrio mudar a string de conexo para computer1: C:\Database\data.fdb (onde computer1 o nome na rede do computador onde o FBScanner est sendo executado).
IBSurgeon 2002-2012
13 Como configurar o Log? Como configurar o Log? A partir do menu Iniciar, execute o Firebird Scanner\FBScanner Settings, em seguida clique no boto Advanced options (no canto direito inferior da tela principal).
Quando aparecer a caixa de dialogo clique na aba SQL log.
Por padro o log est desabilitado. Importante! necessrio entender que o recurso de gravar log de um banco de dados SQL ir registrar todas as operaes SQL incluindo transaes, conexes, etc. Isso significa que o log de um banco de dados ir consumir a mesma quantidade de recursos (CPU, HDD, etc) que o banco de dados original consumiria. Devido a este fato, para ambientes de alta carga de processamento, recomendamos utilizar a configurao remota do FBScanner para efeito de log de SQL. Existem duas opes para o Log registro em arquivo ou em uma base de dados Firebird. Log em arquivos texto Log em arquivo texto cria um arquivo para cada conexo, onde o FBScanner registrar os comandos SQL e os operadores de transaes. recomendvel o log em arquivo para propsitos de depurao durante o desenvolvimento adequado para investigar o cdigo SQL de forma linear. Se existem muitas
IBSurgeon 2002-2012
14 Como configurar o Log? conexes, o log em arquivo torna-se ineficiente pois a complexidade aumenta para investigar o cdigo SQL. Para habilitar o log em arquivo, clique no radio button prximo opo File e configure a pasta de destino onde sero armazenados os logs (verifique se a pasta existe antes de configura-la como repositrio):
Aps a configurao, clique no boto Ok. Importante! Habilitar a funo de log em arquivo texto requer que o servio do FBScanner seja reiniciado, logo todas as conexes correntes sero desconectadas. O FBScanner ir solicitar permisso para executar a reinicializao imediatamente. Exemplo de log em arquivo texto Para os comandos isql abaixo Use CONNECT or CREATE DATABASE to specify a database SQL> connect "localhost:E:\Temp\TEST15_2.FDB"; Database: "localhost:E:\Temp\TEST15_2.FDB" SQL> create table t1(i1 integer, c1 varchar(150)); SQL> create table t2(i2 integer, b1 blob); SQL> select count(*) from t1; COUNT ============ 0 SQL> insert into t1(i1, c1) values(1, 'test'); SQL> select count(*) from t1; COUNT ============ 1 SQL> exit;
IBSurgeon 2002-2012
15 Como configurar o Log? O FBScanner ir criar o seguinte log em arquivo texto: /* Log created by FBScanner v2.7.19 14.01.2011 16:06:07 Client IP = 127.0.0.1 Client Name = ibsurgeon3 Client Process = isql [1884] */ CONNECT '127.0.0.1/3053:E:\Temp\TEST15_2.FDB' USER 'SYSDBA';
/* 14.01.2011 16:07:17 */ /* QrID=40 TrID=20; INFO */
/* Fetch count = 1 */
/* 14.01.2011 16:07:26 */ /* TrID=32; */ COMMIT;
/* 14.01.2011 16:07:26 */ /* TrID=27; */ COMMIT;
/* 14.01.2011 16:07:26 */ /* TrID=20; */ COMMIT;
Como podemos perceber, o log em arquivo muito til para entender como os comandos SQL esto sendo executados dentro de uma conexo especfica. Log em banco de dados Firebird Antes de comear com o log de SQL, necessrio entender alguns detalhes dessa implementao, que podem ser muito importantes para sistemas em produo. Em geral, o registro de log em banco de dados Firebird implementado de forma direta: O servio do FBScanner registra todo trafego SQL em uma base de dados Firebird externa. A base de dados Firebird que armazenar o log pode estar no mesmo computador onde o FBScanner est sendo executado ou em outro computador remoto.
FBScanner
Base de Dados de Log (Firebird 2.5)
IBSurgeon 2002-2012
17 Como configurar o Log? Considere os seguintes requisitos para configurao de log SQL em banco de dados Firebird: - O banco de dados de log (e a instncia apropriada do Firebird) precisam estar no formato do Firebird 2.5 (a partir do FBScanner 2.7.15). Se precisar utilizar o FBScanner em um computador com uma verso diferente do Firebird, ser necessrio utilizar a verso embarcada do Firebird 2.5 para armazenar o log. - Todo o trafego SQL ser registrado em uma nica tabela, com os marcadores apropriados das informaes armazenadas (qual computador, aplicao, usurio, etc.). - Armazenamento de log em banco de dados pode consumir uma quantidade considervel de recursos. No caso de haver muitas conexes recomendvel configurar o FBScanner para utilizar um banco de dados de log em um computador remoto dedicado. - Em muitos casos, no necessrio armazenar o log de todas as conexes, por que elas repetem sempre os mesmos conjuntos de consultas SQL. Uma cuidadosa investigao de uma nica conexo pode ser mais eficiente para encontrar problemas de performance.
Para habilitar o log de SQL em banco de dados Firebird, clique no radio button SQL. Esta ao ir habilitar as caixas de texto e controles apropriados para esta configurao.
Primeiramente, clique no boto Edit.
Importante! Se existe a inteno de utilizar a mesma instancia do Firebird para armazenar o log de trafego SQL, ser necessrio especificar de forma explicita a string de conexo e a porta a ser utilizada. Em nosso exemplo, ser a porta 3053, sendo que a string de conexo ficaria da seguinte forma: 127.0.0.1/3053:C:\FBScanner_log.fdb
Nesta caixa de dialogo ser necessrio especificar como conectar ao banco de dados de log. Se no existe um banco de dados especfico para este fim, possvel criar um clique no boto Create database log. Teste a conexo com o banco de dados para o log clique no boto Test connection.
Clique no boto Ok para armazenar as configuraes.
IBSurgeon 2002-2012
18 Como configurar o Log?
Marcadores de transaes O FBScanner pode obter informaes sobre os marcadores de transaes (da mesma forma como o IBSurgeon Transaction Monitors faz). As informaes coletadas sero disponibilizadas como grficos no FBScanner Log Analyzer. Para este propsito, o FBScanner executa uma conexo separada, que requer um Login, Senha e caminho apropriado para a dll cliente (se estiver monitorando o Firebird 1.5 com o FBScanner, a dll fbclient.dll da verso 1.5 ser necessria). Se decidir obter informaes dos marcadores de transaes, selecione o checkbox Collect transactions counters info e preencha os campos destinados ao Login, senha e a dll cliente.
Utilizando Embedded Firebird 2.5 para log de SQL Se for necessrio utilizar o log de SQL em um computador onde uma instancia mais antiga do Firebird est sendo utilizada (1.0, 1.5, 2.0., 2.1 ou mesmo o InterBase), recomendvel utilizar o Firebird 2.5 Embedded para armazenar o log. Faa o download do Firebird 2.5 Embedded a partir do link abaixo http://sourceforge.net/projects/firebird/files/firebird-win32/2.5-Release/Firebird-2.5.0.26074- 0_Win32_embed.zip/download Descompacte o arquivo para a pasta do FBScanner (C:\Arquivos de Programa\IBSurgeon\Firebird Scanner por padro) e renomeie fbembed.dll como fbclient.dll. A estrutura de arquivos aparecer como segue abaixo:
Aps esta etapa, execute Advanced options, aba SQL logging, radio button SQL e clique no boto Edit, ento na opo Client library indique a dll fbclient.dll que foi substituda, como demonstrado abaixo.
IBSurgeon 2002-2012
19 Como configurar o Log?
Dica. A dll do Firebird Embedded (fbclient.dll) representa todo o sistema. Ela funciona dentro do processo do FBScanner e no h nenhuma interao com qualquer outra instancia do Firebird.
IBSurgeon 2002-2012
20 Como analisar o Log do FBScanner? Como analisar o Log do FBScanner? Muitos usurios reportam que no conseguem entender como tantas consultas SQL, transaes e outras operaes so executadas por seus softwares. O FBScanner armazena todas as informaes das conexes em uma tabela. Ele utiliza referncia automtica interna para reduzir a quantidade de informao a ser armazenada, o que torna as linhas de registro do log de difcil leitura e entendimento. Para facilitar a analise deste log foi criado um novo mdulo no FBScanner o LogAnalyzer. Ele est disponvel no IBSurgeon Deploy Center para todos os usurios do FBScanner (dentro da seo Download). O LogAnalyzer requer o Firebird 2.5 para trabalhar com o banco de dados de log. Ele tambm cria ndices e executa consultas complexas de relatrios, devido a isto recomendado os seguintes procedimentos: 1) Configure a execuo de log e obteno de estatsticas para pelo menos 1 dia 2) Faa a cpia do banco de dados de log para outro computador com Firebird 2.5 3) Conecte a cpia do banco de dados de log e realize a analise no computador do desenvolvedor 4) Faa a cpia de verses atualizadas do banco de dados de log se necessrio Para analisar o banco de dados de log, execute o LogAnalyzer e clique Connect to FBScanner log base, ento preencha os parmetros da conexo e selecione o banco de dados de log.
Como primeiro passo, o LogAnalyzer ir criar os ndices necessrios, sendo que essa operao pode demorar alguns minutos. Aps esta etapa, o LogAnalyzer ir disponibilizar de forma visual o ltimo dia disponvel de log armazenado na aba Server Load:
IBSurgeon 2002-2012
21 Como analisar o Log do FBScanner?
A aba Server Load mostra quantas consultas SQL foram executadas por minuto, e quanto tempo levou a execuo. Efetivamente, ele mostra a carga do servidor, ou seja, nmero de consultas e seus tempos de execuo. Ao clicar no boto Zoom in (no canto superior esquerdo da aba Server load), arraste o grfico mantendo pressionado o boto direito do mouse e selecione o pico que deseja investigar clique com o boto direito do mouse para abrir o menu popup.
IBSurgeon 2002-2012
22 Como analisar o Log do FBScanner? Esta ao mostrar a aba All statements, onde possvel navegar pelas consultas SQL.
Selecione qualquer consulta que desejar ver seu texto e se o recurso do plano de execuo estiver ativo, este tambm ser mostrado. Para seguir o fluxo de execuo, clique com o boto direito na consulta e veja suas conexes e transaes.
IBSurgeon 2002-2012
23 Como analisar o Log do FBScanner? O LogAnalyzer marca consultas utilizadas na mesma transao:
possvel organizar as consultas, por exemplo, pelo maior tempo de execuo:
IBSurgeon 2002-2012
24 Como analisar o Log do FBScanner? Para investigar mais sobre esta consulta aplique um duplo clique nela e os detalhes sero mostrados.
IBSurgeon 2002-2012
25 Como rastrear o erro de INET 10054, desconexes e falhas de tentativas de login? Como rastrear o erro de INET 10054, desconexes e falhas de tentativas de login? O FBScanner automaticamente armazena todos os erros 10054, desconexes e falhas de login com descries detalhadas no arquivo FBScanner.log, que est armazenado no diretrio principal do FBScanner. 19.08.2010 21:43:09 Connect Error Client IP = 192.10.1.2 Client Name = DB Name = DB User = MORTON Client Process = SUPC [5520] Client Process (by fbclient) = E:\TEMP\TEST1.EXE [5520] STATUS = [file is not a valid database]
19.08.2010 21:43:25 Login Failed Client IP = 127.0.0.1 Client Name = ibsurgeon3 DB Name = C:\Program Files\Jupiter2010\Data\data.gdb DB User = MORTON Client Process = Jupiter.exe [3032] Client Process (by fbclient) = E:\TEMP\TEST1.EXE [3032] STATUS = [Your user name and password are not defined. Ask your database administrator to set up a Firebird login.]
IBSurgeon 2002-2012
26 Backup/Restore e carga de massa de dados Backup/Restore e carga de massa de dados Para realizar operaes que no requerem monitoramento ou depurao, como backup e restore ou carga de massa de dados (em sistemas de faturamento) recomendvel que o servio do FBScanner ignore essas operaes. Se o FBScanner est instalado com a configurao padro (na porta 3050 e o Firebird na porta 3053), a string de conexo pode estar desta forma: Nome_servidor/3053:Disco:\caminho\banco_de_dados.fdb Exemplo de string de conexo: connect "localhost/3053:C:\TEMP\database.fdb" user "SYSDBA" password "masterkey"; Exemplo de comando de backup: gbak.exe -b -g -v -user SYSDBA -pass masterkey localhost/3053:C:\TEMP\database.fdb C:\temp\backup.gbk Obviamente, utilizando uma string de conexo local o servio do FBScanner ser sempre ignorado: gbak.exe -b -g -v -user SYSDBA -pass masterkey C:\TEMP\database.fdb C:\temp\backup.gbk
IBSurgeon 2002-2012
27 Monitoramento em tempo real: FBScanner Viewer Monitoramento em tempo real: FBScanner Viewer Para monitorar conexes, consultas e transaes em tempo real, o FBScanner inclui uma ferramenta especifica de nome FBScanner Viewer. O FBScanner Viewer mostra instantaneamente o trafego SQL entre o Firebird e seus clientes monitorados naquele momento.
A primeira coluna destina-se ao tipo do registro conexo, declaraes ou transaes. Na tabela abaixo temos a descrio de todas as colunas da tela principal do FBScanner Viewer (algumas colunas esto invisveis por padro, use o menu Columns para tornar as colunas visveis ou invisveis): Ttulo da Coluna Descrio da Coluna ! (primeira coluna) Indica o tipo do registro no FBScanner Viewer existem grupos separados para declaraes SQL, transaes e conexes. Eles esto descritos na prxima tabela abaixo. O sinal ! no ttulo desta coluna significa que o filtro ativo clique no triangulo ao lado direito do smbolo ! para ajusta-lo. Tag Fundo Verde/Vermelho mostram o uso de CPU em percentual (Vermelho Kernel, Verde Firebird). O texto mostra o valores das tags (se foram especificadas na consulta SQL). Exemplo de como configurar os valores das tags: SELECT * FROM RDBDATABASE /*FBSCANNER$CON_NAME=MinhaConexao; FBSCANNER$TR_NAME=MinhaTransacao; FBSCANNER$ST_NAME=AlgumaConsultaImportante; */; Tambm nesta coluna ser mostrado a execuo das ferramentas gbak e gfix Transaction Count Aplicvel para cada linha de conexo. O nmero de transaes ativas por conexo ser mostrado. muito til para encontrar aplicaes com auto-commit e outros problemas de gerenciamento ineficiente de transaes. PID Identificador do processo do Firebird. Somente para arquitetura Classic Client IP Endereo IP da conexo Client Name DNS da conexo (se for possvel) Client Process Name A partir do Firebird 2.1, fbclient.dll mostra o nome da aplicao cliente. Por exemplo: C:\Arquivos de Programas\Firebird\Firebird_2_1\bin\isql.exe
IBSurgeon 2002-2012
28 Monitoramento em tempo real: FBScanner Viewer Priority Prioridade da instancia Firebird (Arquitetura Classic somente) Database Nome do banco de dados ou seu apelido, assim como est na string de conexo User Nome do usurio por exemplo: SYSDBA ( no suporta Trusted Authentication) Role Role do Usurio Start Para cada linha de conexo tempo de conexo, para transao hora de incio, para o comando SQL tempo da consulta. Time Tempo decorrido desde o incio Last Activity Hora da ltima ao na conexo, transao ou comando corrente. Inactive ltima atividade; Perodo de inatividade Latest Retaining Tempo do COMMIT RETAINING ou ROLLBACK RETIANING mais recente, na transao atual Retaining ltima reteno Received Bytes recebidos pelo cliente Sent Bytes enviados pelo cliente CPU Time Mostra o tempo total consumido na conexo/transao/consulta. Se existe mais de uma consulta na transao, o tempo de execuo de todas as consultas ser somado. A mesma regra serve para o tempo de calculo da conexo. Prepare Time Execute Time Fetch Count Aplicvel somente para comandos SQL. Nmero de linhas recuperadas, como reportado pelo fbclient.dll Protocol Verso do protocolo do Firebird para sesso corrente Version Verso do fbclient.dll/gds32.dll. Deteco de verso no 100% correta: - Minor versions so consideradas como iguais, - JayBird e o .NET Provider so considerados iguais, - InterBase 8.x igual ao Interbase 9.x
Na tabela abaixo possvel ver os detalhes de cada valor que aparece na primeira coluna do FBScanner Viewer para linhas de comandos SQL: Flag Descrio A Alocado. Fase inicial de uma consulta SQL no seu ciclo de vida P Preparado. Indica que o comando est pronto para ser executado E Executar. A consulta est sendo executada neste momento C Consulta terminada. Execuo foi finalizada D Consulta descartada F A consulta est em andamento f A consulta est em andamento, mas suspensa momentaneamente (bloco de registros ainda no transferido) c Cursor fechado. Todos os dados foram transferidos.
IBSurgeon 2002-2012
29 Monitoramento em tempo real: FBScanner Viewer Tags O uso de Tags permite identificadores mais legveis (nomes) nas Conexes, Consultas e Transaes. Faz- se necessrio apenas adicionar os comentrios abaixo: SELECT COUNT(*) FROM RDB$DATABASE /* FBSCANNER$CON_NAME=MinhaAplicacao; FBSCANNER$TR_NAME=Transacao_de_Leitura; FBSCANNER$ST_NAME=Lista_Consultas_Clientes; */ FBSCANNER$CON_NAME= determina o nome da conexo. Aps a sua definio, este nome ser mantido durante todo o tempo de vida da conexo. FBSCANNER$TR_NAME= determina o nome da transao. Aps o primeiro uso, este nome ser utilizado durante todo o tempo de vida da transao. FBSCANNER$ST_NAME= determina o nome da consulta. As Tags so disponibilizadas na primeira coluna do grid do FBScanner Viewer, possvel filtrar as tags pelos seus respectivos nomes. As Tags so muito teis para responder rapidamente os seguintes questionamentos: Qual programa lanou esta consulta? (desenvolvedores precisam marcar com a FBSCANNER$CON_NAME cada conexo ao banco de dados) Qual a transao desta consulta? (desenvolvedores precisam utilizar a tag FBSCANNER$TR_NAME para marcar as transaes) Qual a consulta mais demorada? (desenvolvedores podem marcar consultas de maior tempo de execuo com nomes, por exemplo: Relatrio Anual)
IBSurgeon 2002-2012
30 Monitoramento em tempo real: FBScanner Viewer O Menu do FBScanner Viewer O FBScanner Viewer oferece uma srie de opes para facilitar as operaes de depurao e otimizao, que so acessveis atravs do seu menu: - Server o Connect To o Disconnect To o Recent Servers o Exit - Connections o Disconnect o Disconnect Clients o Kill Process o Latest Queries o Oldest Connection o Process Priority o Ping Client o Ping All Clients o Extract Plans - Transactions o OAT - Tools o View Style Database Administrator (connections only) Database Developer (without transactions) Database Developer (with transactions) o Language English, Italian, Russian, Portuguese o Plugins o Options - Columns list of columns - Help Server Para conectar ao servio do FBScanner Service selecione Service\Connect To. A caixa de dialogo abaixo ir aparecer:
Aps selecionar o servidor o FBScanner Viewer ir solicitar a senha. Existem duas senhas para acesso somente leitura e acesso administrativo (todas as funes). Por padro, a senha para acesso somente leitura vazio.
IBSurgeon 2002-2012
31 Monitoramento em tempo real: FBScanner Viewer
Dica. Para configurar senha para o acesso do FBScanner Viewer necessrio acessar o FBScanner Configuration Advanced Settings. Server\Disconnect desconecta o FBScanner Viewer do servio do FBScanner. Server\Recent Servers mostra a lista dos mais recentes servios do FBScanner onde o FBScanner Viewer se conectou. Exit fecha o FBScanner Viewer. Connections As opes de menu Disconnect, Disconnect clients and Kill Process esto disponveis somente quando o servio do FBScanner est conectado com direitos administrativos. Disconnect ir solicitar a desconexo da conexo corrente (destacado na pgina principal do grid do FBScanner Viewer):
Disconnect clients executa a caixa de dilogo abaixo:
IBSurgeon 2002-2012
32 Monitoramento em tempo real: FBScanner Viewer No lado direito temos a lista de conexes, representadas pelos nomes dos bancos de dados, ou clientes, ou usurios, de acordo com o filtro utilizado. Utilizando os botes > e <, o administrador pode selecionar as conexes a serem desconectadas e ento clicar no boto Disconnect. A desconexo ser feita emulando o erro 10054 registros especficos sero armazenados nos arquivos firebird.log (interbase.log) e no FBScanner.log. Kill Existem alguns poucos casos onde necessrio terminar o processo do Firebird, sendo que no recomendamos que isto seja feito. Kill process ir requisitar que o processo do Firebird seja explicitamente interrompido, ele funciona apenas com o FBScanner local e na arquitetura Classic:
Esta funo no funcionar com as arquiteturas SuperServer ou SuperClassic. Latest Queries disponibiliza a lista das 20 consultas mais recentes de uma conexo previamente selecionada:
Este recurso muito til para depurao ad-hoc, funciona como um boto de retrocesso. Dica. Para ter todos os detalhes de log, habilite o recurso de log SQL no servio do FBScanner, e use o FBScanner LogAnalyzer para analisar o log. Oldest Connection mostra a conexo mais antiga no grid.
IBSurgeon 2002-2012
33 Monitoramento em tempo real: FBScanner Viewer Process Priority aplicvel somente instalao local do FBScanner com arquitetura Classic. Ele permite determinar a prioridade do processo na instancia de arquitetura Classic. Ping Client permite verificar se uma determinada conexo ainda est ativa Ping All Clients verifica se todas as conexes esto ativas Extract plans inicia a extrao de planos para a conexo selecionada. Os planos so disponibilizados no grid, e tambm armazenados no log. Se o recurso de log no est habilitado, nada acontecer. Para habilitar a extrao de planos para todas as conexes, utilize a configurao apropriada no FBScanner Configuration. Transactions A opo Transactions\OAT ir colocar a seleo no grid da transao mais antiga que ainda esta ativa. Tools No menu Tools temos muitas opes. Com View Style o usurio pode selecionar o melhor estilo de representao de dados do grid: - Database Administrator (connections only) - Database Developer (without transactions) - Database Developer (with transactions) O FBScanner Viewer est traduzido em 4 idiomas. Utilize Tools\Language para mudar entre eles:
Plugins a opo que habilita o uso de plugins. Para maiores informaes entre em contato com support@ib-aid.com Options outro caminho para modificar os parmetros de configurao do servio do FBScanner.
IBSurgeon 2002-2012
34 Monitoramento em tempo real: FBScanner Viewer
Por favor, considere a sesso apropriada deste guia para maiores detalhes destas configuraes.
IBSurgeon 2002-2012
35 Estrutura do Log SQL Estrutura do Log SQL O FBScanner armazena o trafego SQL na tabela a seguir: CREATE TABLE FBSCANNER$LOG ( ID BIGINT NOT NULL, IDATTACHMENT BIGINT, IDTRANSACTION BIGINT, PID INTEGER, ROW_TYPE INTEGER NOT NULL, CLIENT_IP VARCHAR(24), CLIENT_NAME VARCHAR(256), CUSTOM_NAME VARCHAR(256), SUBNET_NAME VARCHAR(256), DB_FILENAME VARCHAR(512), DB_USER VARCHAR(512), DB_ROLE VARCHAR(512), START_TIME TIMESTAMP DEFAULT 'NOW' NOT NULL, END_TIME TIMESTAMP, LAST_ACTIVITY TIMESTAMP DEFAULT 'NOW' NOT NULL, LAST_RETAINING TIMESTAMP, WORK_TIME INTEGER DEFAULT 0 NOT NULL, CPU_TIME_USER INTEGER DEFAULT 0 NOT NULL, CPU_TIME_PRIVILEGED INTEGER DEFAULT 0 NOT NULL, FETCH_COUNT INTEGER DEFAULT 0 NOT NULL, RESULT INTEGER, SQL_TEXT BLOB SUB_TYPE 1 SEGMENT SIZE 80, SQL_TEXT2 BLOB SUB_TYPE 1 SEGMENT SIZE 80, SQL_PLAN BLOB SUB_TYPE 1 SEGMENT SIZE 80, PREPARE_TIME INTEGER DEFAULT 0 NOT NULL, EXECUTE_TIME INTEGER DEFAULT 0 NOT NULL ); Estrutura Lgica Existem 3 nveis de hierarquia nesta tabela: - ID chave primria - IDATTACHMENT e IDTRANSACTION chaves estrangerias referenciando ao FBSCANNER$LOG.ID - ROW_TYPE - nvel hierrquico ( 0, 1, 2 ) Nvel 1. Conexo. ROW_TYPE = 0 PID Identificador do processo (somente em FBScanner local) ROW_TYPE 0 CLIENT_IP Endereo IP do cliente CLIENT_NAME Nome DNS CUSTOM_NAME Tag de conexo (se foi configurada) SUBNET_NAME Nome lgico de subnet. Veja o arquivo FBScanner.subnets DB_FILENAME Apelido do banco de dados ou seu caminho completo DB_USER Nome do Usurio DB_ROLE Role do Usurio START_TIME Inicio da conexo END_TIME Final da conexo
IBSurgeon 2002-2012
36 Estrutura do Log SQL Nvel 2. Transao. ROW_TYPE = 1 IDATTACHMENT Identificador da Conexo ROW_TYPE 1 CUSTOM_NAME Tag da transao (se foi configurada) START_TIME Hora de incio da transao END_TIME Hora final da transao LAST_RETAINING Hora do mais recente commit retaining ou rollback retaining RESULT 0 Transao est ativa 1 Commit 2 Rollback SQL_TEXT Transaction flags
Nvel 3. Consulta. ROW_TYPE = 2 IDATTACHMENT Identificador da Conexo IDTRANSACTION Identificador da transao ROW_TYPE 2 CUSTOM_NAME Tag de Consulta (se foi configurada) START_TIME Hora de incio da consulta WORK_TIME Tempo de trabalho no servidor CPU_TIME_USER Tempo de CPU (apenas local) CPU_TIME_PRIVILEGED Tempo de Kernel(apenas local) FETCH_COUNT Nmero de registros retornados por uma consulta RESULT 0 consulta executada com sucesso, caso contrrio este campo conter o cdigo do erro SQL_TEXT Texto da consluta (com os parmetros) SQL_TEXT2 Texto original da consulta (ser nulo se for igual ao SQL_TEXT) SQL_PLAN Plano de execuo da consulta (se a configurao Extract plans estiver habilitada) PREPARE_TIME Tempo de preparao EXECUTE_TIME Tempo de execuo
ndices no log Inicialmente, a base de dados de log contm apenas a chave primria e consequentemente seu ndice. O FBScanner Log Analyzer cria os ndices necessrios na primeira conexo.
IBSurgeon 2002-2012
37 Matriz de Caractersticas do FBScanner Matriz de Caractersticas do FBScanner
# Recurso Modo do FBScanner Agent Remote SISTEMA OPERACIONAL SUPORTADO Windows X X Linux, Mac OS X, Free BSD X Firebird and InterBase versions supported Firebird 1.0, Yaffil 1.0 (incluindo log) X X Firebird 1.5 (incluindo log) X X Firebird 2.0 (incluindo log) X X Firebird 2.1 (incluindo log) X X Firebird 2.5 (incluindo log + suporte SuperClassic) X X InterBase 6.0-2009/XE (incluindo log) X X 1 Conexes
1.1 Informaes sobre conexes estabelecidas no FBScanner Viewer: Login de usurio Firebird/InterBase X X Endereo IP ou nome do computador X X Hora da conexo e hora da ltima atividade X X Prioridade do processo (apenas para arquitetura Classic) X 1.2 Gerencia de conexo (requer o log do FBScanner Viewer com direitos administrativos)
Desconexo segura de uma conexo entre as conexes utilizando interrupo TCP/IP (emulando o erro 10054) X X Mudana da prioridade do processo na arquitetura Classic (por exemplo para ajustar a prioridade durante uma longa execuo de relatrio ou algo parecido. Utilizando tags o administrador consegue reconhecer onde o relatrio est sendo executado X Configurao de prioridade automtica para o Firebird com arquitetura Classic. Na configurao do FBScanner o administrador pode configurar a correspondncia automtica: X
IBSurgeon 2002-2012
38 Matriz de Caractersticas do FBScanner IP Especfico ou subnet dos IPs determinar prioridade X Hostname especfico determinar prioridade X Banco de dados especfico determinar prioridade X Usurio especfico determinar prioridade X Interromper o processo da arquitetura Classic, no recomendvel utilizar, mas em alguns casos pode ser til X Habilidade de restringir conexes (para execuo de operaes que exigem acesso exclusivo) X X Filtrar a visualizao de conexes utilizando seus parmetros (menos a informao de tempo) X X Lista branca e preta de banco de dados a conectar X X Lista branca e preta de endereos IP (clientes) X X Restrio de conexes # - o administrador pode limitar o nmero de conexes X X Emulao de erro Wrong login/password para conexes no permitidas X Deteco de verses antigas ou incorretas de fbclient.dll/gds32.dll X X 1.3 Log de eventos relacionados s conexes X X O FBScanner armazena automaticamente tentativas de login sem sucesso no arquivo FBScanner.log. Para cada tentativa as seguintes informaes so armazenadas: Endereo IP, nome de usurio, banco de dados e a hora da tentativa. X X Se uma conexo for quebrada (erro 10054), o FBScanner determina e armazena um dos 5 tipos de desconexo: 1) A aplicao cliente foi encerrada de forma inapropriada 2) Conexo foi interrompida por tempo de inatividade ou tempo limite ( possvel configurar que a desconexo forada seja feita por meio de timeout tambm) 3) Quebra de servidor (fbserver ou fb_inet_server) 4) Processo do servidor (fbserver ou fb_inet_server) foi terminado pelo FBScanner 5) Desconexo de conexes a partir do FBScanner Viewer Para todos os casos acima, o FBScanner registra o endereo IP e a razo da desconexo. Este um recurso muito til, para encontrar e eliminar erros do tipo 10054. X X
2. Transaes 2.1. Transaes so mostradas dentro de sua conexo apropriada
IBSurgeon 2002-2012
39 Matriz de Caractersticas do FBScanner Flags de transaes X X Tempo de vida das transaes X X Utilizando o boto OAT possvel encontrar a transao ativa mais antiga em tempo real e revisar as consultas e conexes relacionadas a ela X X 3. Consultas (Queries) 3.1 Informao sobre as consultas Hora de Incio X X Texto da consulta X X Transao da consulta X X Status (prepare/execute/...) X X Filtrar pelo status (por padro as marcaes Closed esto como invisveis) X X Indicador de carga da CPU X X Se a consulta em PREPARE ou EXECUTION causar um erro, o FBScanner armazena o cdigo do erro no log (por exemplo: violao de chave primria)
3.2 Operaes adicionais com consultas Extrao de planos Ad-hoc das consultas Pode ser executado por todas as conexes (deve ser habilitado no utilitrio de configurao do FBScanner) Pode ser habilitado ou desabilitado para conexes especficas somente no FBScanner Viewer Em ambos os casos, os planos sero armazenados no log se o recurso de log do SQL estiver habilitado. X X 4. Tags O uso de Tags permite utilizar nomes mais legveis em conexes, consultas e transaes. necessrio apenas adicionar os comentrios abaixo: SELECT COUNT(*) FROM RDB$DATABASE /* FBSCANNER$CON_NAME=MinhaAplicacao; FBSCANNER$TR_NAME=Transacao_Somente_Leitura; FBSCANNER$ST_NAME=Lista_Consulta_Clientes; */ X X
IBSurgeon 2002-2012
40 Matriz de Caractersticas do FBScanner
FBSCANNER$CON_NAME= determina o nome da conexo. Aps a sua definio, este nome ser mantido durante todo o tempo de vida da conexo. X X FBSCANNER$TR_NAME= determina o nome da transao. Aps o primeiro uso, este nome ser utilizado durante todo o tempo de vida da transao. X X FBSCANNER$ST_NAME= determina o nome da consulta. As Tags so disponibilizadas no FBScanner Viewer X X possvel filtrar as tags pelos seus respectivos nomes X X As Tags so muito teis para responder rapidamente os seguintes questionamentos: Qual programa lanou esta consulta? (desenvolvedores precisam marcar com a FBSCANNER$CON_NAME cada conexo ao banco de dados) Qual a transao desta consulta? (desenvolvedores precisam utilizar a tag FBSCANNER$TR_NAME para marcar as transaes) Qual a consulta mais demorada? (desenvolvedores podem marcar consultas de maior tempo de execuo com nomes, por exemplo: Relatrio Anual) X X 5. Log
O Log permite interceptar todas as consultas e armazena-las em um banco de dados Firebird externo. Para sua informao, o recurso de log no pode ser substitudo pelas tabelas de sistema presentes nas verses do Firebird >= 2.1 ou InterBase, pois elas apenas promovem informao instantnea dos programas. X X Conexes, transaes e consultas so armazenadas. X X Todas as consultas executadas so armazenadas (apenas as consultas preparadas so ignoradas) X X Consultas so armazenadas com as informaes sobre sua conexo e sua transao X X Todas as transaes so armazenadas, mesmo as que executam um rollback. No registro do log da transao h uma coluna RESULT que mostra se a transao foi finalizada ou desfeita. X X Se a extrao do plano foi habilitada, os planos das consultas tambm so armazenados X X
IBSurgeon 2002-2012
41 Matriz de Caractersticas do FBScanner Criao automtica do banco de dados de log X X Criao automtica das tabelas de log em qualquer banco de dados Firebird X X
IBSurgeon 2002-2012
42 Suporte e como comprar Suporte e como comprar Se houver qualquer problema no FBScanner, por favor, esteja vontade para fazer perguntas e entrar em contato atravs do e-mail: support@ib-aid.com O FBScanner pode ser comprado com desconto exclusivo para os brasileiros, somente atravs dos links disponveis na loja on-line da FireBase (www.firebase.com.br)