Apostila - Banco de Dados Firebird

Apostila - Banco de Dados Firebird

(Parte 1 de 3)

Programa de Capacitação Profissional 2010

Página 1 de 15

SPDATA Serviço de Processamento de Dados LTDA Treinamento de Banco de Dados Firebird

Romilton Gonçalves Dias Instrutor

Objetivo: Qualificação dos Profissionais para Gerenciamento e Manutenção do Banco de Dados Firebird Objetivos Específicos:

1. Versão do Firebird utilizada no sistema SGH e projeto de homologação para Firebird 2.1Pag 2
2. Novidades da versão 2.1 do FirebirdPag 2
3. Diferença de SuperServer e ClassicServer (quando usar e como migrar)Pag 4
4. Instalação do Firebird nas estações Windows XP, Vista e Seven em Servidores Windows e LinuxPag 4
5. Ferramentas Nativas Gbak, Gfix, Gstat, Gsec e isqlPag 5
6. Configurações e cuidados para melhor desempenhoPag 9
7. Estrutura do banco de dados do sistema SGHPag 9
8. Tipos de Erros e CorrupçõesPag 9
9. Correção do banco de dados corrompidoPag 10
10. Ferramentas (isql, Iboconsole, Ibexpert,Putty, Grep )Pag 10
12. Formas de configurações do back-up Automático (Linux e Windows)Pag 1
13. Restaurar banco de dados completo ou parcialPag 12
14. Comandos SQL DML (Consultas, update, delete, insert)Pag 13
15. Integração do Sistema SGH entre os módulosPag 15

Programa de Capacitação Profissional 2010

Página 2 de 15

1 - Versão do Firebird utilizada no sistema SGH e projeto de homologação para Firebird 2.1

Atualmente a versão padrão homologada pela equipe de desenvolvimento da SPdata é Firebird 1.5 que está com a sua última versão Firebird-1.5.6.5026-0 e disponível para download no site oficial w.firebirdsql.org.

O Processo de homologação para versão do Firebird 2.1 está em fase final e será disponibilizado nas próximas versões

2 - Principais novidades do Firebird 2.1

Monitoramento de banco de dados

Talvez este seja o recurso mais aguardado para esta versão do Firebird. Aqueles que sempre quiseram saber o que se passava dentro de um banco de dados em um determinado momento, agora poderão extrair essa informação através das tabelas virtuais de monitoramento! Note que, para ter acesso a esse recurso, sua base de dados deve estar com a ODS na versão 1.1. A recuperação das informações de monitoramento é feita através de selects normais, executados nas tabelas de monitoramento. É importante saber que o acesso à informação é feito com a transação associada ao select de monitoramento no isolamento “Consistency”. Com isso, para atualizar as informações recuperadas (refresh), é necessário fechar a transação atual e executar o select novamente, abrindo uma nova transação. Isso garante que as informações de tabelas de monitoramento inter-relacionadas (mestredetalhe) estarão sempre consistentes. A consulta completa das informações de monitoramento só pode ser realizada pelo owner do banco de dados, ou pelo SYSDBA. Usuários “normais” só têm acesso às informações relacionadas à sua própria conexão com o banco. As tabelas de monitoramento são: MON$DATABASE, MON$ATTACHMENTS, MON$TRANSACTIONS, MON$TRANSACTIONS, MON$STATEMENTS, MON$CALL_STACK, MON$IO_STATS, MON$RECORD_STATS. Existem softwares no Mercado que fazem este monitoramento de modo gráfico um deles é o Sinatica que pode ser baixado do site oficial w.sinatica.com.br

Programa de Capacitação Profissional 2010

Página 3 de 15

Cancelando comandos

Através das tabelas de monitoramento, é possível cancelar queries ou comandos que estão sendo executados. Para isso, basta abrir uma conexão com o banco de dados e dar um delete na tabela mon$statements, apagando o registro que representa o comando que você quer cancelar. O comando abaixo cancela todos os comandos que estão sendo executados no banco de dados, e que não estejam associados à conexão do SYSDBA (que está executando o cancelamento): delete from mon$statements where mon$attachment_id <> current_connection

Otimização do protocolo de comunicação

O Firebird, quando utilizado no modelo “duas camadas” (cliente <-> servidor) em redes de baixa velocidade (ex: Internet), se mostra bastante lento. O culpado, neste caso, é o protocolo de comunicação responsável pela conversa entre a aplicação cliente e o servidor Firebird, que não foi originalmente escrito para ser usado em redes com banda limitada. A solução definitiva para este “problema” virá em alguma versão futura do Firebird, com a criação de um novo protocolo de comunicação. No entanto, isso quebrará a compatibilidade de comunicação com servidores antigos. No Firebird 2.1, algumas rotinas do atual protocolo de comunicação foram otimizadas, de forma a gerar menos “conversa” entre o cliente e o servidor, sem perder a compatibilidade com as versões anteriores do Firebird. Em alguns casos, um ganho de performance de cerca de 40% pôde ser observado nas conexões via internet. Para ter total proveito das otimizações realizadas, é necessário que a conexão esteja usando o fbclient.dll da versão 2.1, e que o servidor também seja 2.1 (ou superior). Nota: Drivers que acessam diretamente o servidor, sem passar pela fbclient.dll (ex: JayBird e .NET Provider) deverão ter seus códigos atualizados para que tirem proveito das otimizações.

Pré-alocação de espaço no disco

Sabemos que o arquivo de um banco de dados Firebird cresce de acordo com a necessidade. O Firebird 2.1 introduz a possibilidade de pré-alocar espaço, diminuindo a fragmentação do arquivo, o que causa um impacto positivo na performance de leitura do disco. No momento, este recurso está disponível apenas para a versão Windows. O novo parâmetro “DatabaseGrowthIncrement” pode ser configurado no firebird.conf, e determina o limite máximo (em bytes) que poderá ser pré-alocado na requisição de alocação de espaço para o banco de dados. O padrão é 128MB. Configurar esse parâmetro com o valor zero desativa o recurso de pré-alocação. Nota: Em situações muito específicas, havia a possibilidade de corrupção de um BD, caso a partição onde ele estivesse armazenado ficasse cheia. Para solucionar este problema, o Firebird 2.1, no momento de alocação de espaço, faz com que as páginas criadas sejam imediatamente gravadas no disco. Isso significa que o Firebird está realizando uma operação de escrita adicional em relação ao modelo anterior, o que, em algumas situações, pode afetar negativamente o desempenho.

Backup Incremental

Desde a versão 2.0 o Firebird foi incorporado o backup incremental com o aplicativo Nbackup. O nbackup é um novo utilitário de backup que vem junto com o Firebird 2.1 e oferece funcionalidades inexistentes no gbak, ferramenta de backup pré-existente no Firebird, porém, não substitui esse último. Ambos os programas têm as suas vantagens e desvantagens e irão ainda coexistir provavelmente por algum tempo. Neste artigo, aprenda tudo sobre esse poderoso utilitário. Sintaxe C:\banco> nbackup -B 0 sghdados.001 backnivel0_1-set-2010.nbk C:\banco> nbackup -B 1 sghdados.001 backnivel1_1-set-2010.nbk C:\banco> nbackup -B 2 sghdados.001 backnivel2_1-set-2010.nbk

Programa de Capacitação Profissional 2010

Página 4 de 15

3 - Diferença de SuperServer e ClassicServer (quando usar e como migrar)

Super Server e Classic Server O Firebird possui duas versões: a versão Super Server a versão Classic Server. Entre as duas a diferença está na forma como está estruturada o gerenciamento das conexões dos clientes e processamento. 1. Na versão Super Server os recursos (valores recuperados do disco, consultas feitas) são compartilhados por todos os clientes conectados. Super vem de supervisor Ou seja somente um processo rodando no servidor para todos usuários. (fbserver) Caso pane terá de Parar o processo e todos os usuários! 2. Já na versão Classic Server, cada cliente tem sua própria “instância do banco de dados” (fb_inet_server) e comunicam-se entre si através de um gerenciador de transações (fb lock mgr). Ou Seja um processo no servidor para cada conexão no banco de dados caso de pane pode idenificar.

Super Server ou Classic Server Qual é Melhor? Nenhuma das duas versões é melhor ou pior, cada uma adequa-se melhor a cada caso ou seja, necessita de análise. Para determinadas situações a versão Super Server é mais recomendada (Servidor com pouca memória RAM, número médio ou pequeno de clientes conectados, Servidor uniprocessado). Em outras situações a versão Classic Server sai-se melhor (Muita memória RAM disponível, Servidores multiprocessados muitas conexões simultâneas). A vantagem da versão Classic Server é tratar os usuários de forma independente, Uma desvantagem da mesma é o consumo elevado da memória RAM (mas caso o server tenha muita memória RAM isto deixa de ser uma desvantagem). Para migrar de Super Server para Classic Server no Linux precisa alterar os buffers de páginas de dentro da pasta /opt/firebird/bin rodar o comando gfix -b 75 /work/banco/sghdados.001 e o xinet.conf alterando a quantidade de

instances= 3000 cps = 50 100

instâncias, o arquivo de configuração fica dentro da pasta /etc

No caso do Windows alterar somente os buffers de páfinas com o comando gfix -b 75 -user sysdba -pass senha sghdados.001 (lembrando que o arquivo gfix fica na pasta arquivos de programas e pode ser copiado para dentro da pasta banco. 4 - Instalação do Firebird nas estações Windows XP, Vista e Seven

Instalação Firefird Windows Baixe o arquivo Firebird-1.5.6.5026-0-Win32 http://www.firebirdsql.org Escolha a arquitetura Super server ou Classic e marque a opção copiar Biblioteca para pasta de system Como defaul a senha do sysdba é masterkey Para alterar via gráfico Pode ser no Ibosonsole Na opção usuário e digite Por cima da senha existente e grave No windows fica C:\Arquivos de programas\Firebird\Firebird_1_5

ATENÇÃO Windows Vista e Seven Se você estiver instalando em Windows Vista ou Seven, o instalador opção para instalar o Control Panel applet deve ser desativado para evitar ter que quebrar o Painel de Controle do seu sistema Windows.

Programa de Capacitação Profissional 2010

Página 5 de 15

Instalação Firebird no Linux

Se você baixou o Firebird em .rpm copie o mesmo para o servidor Linux e digite rpm -Uvh FirebirdSS-1.5.6.5026- 0.nptl.i686.RPM Para desinstalar rpm -e FirebirdSS-1.5.6.5026-0.nptl.i686 Se você baixou o Firebird em .tar Para instalar a versão nptl super Server checar se o servidor suporta getconf GNU_LIBPTHREAD_VERSION tar -xzf FirebirdSS-1.5.6.5026-0.nptl.i686 cd / FirebirdSS-1.5.6.5026-0.nptl.i686 ./install.sh Vai pedir a senha sysdba escolha e de enter Geralmente o Firebird é instalado na pasta opt/firebird Para a versão Classic Server configurar o xinet.d aumentar as instâncias algumas distribuições do Linux necessitam de instalar libstdc++ No caso do Linux os pacotes Super Server e Classic server são separados o Classic Server FirebirdCS-1.5.5.4926-0.i686 tema diferença pelas letras CS

5 - Ferramentas Nativas Gbak, Gfix, Gstat, Gsec e isql

Gbak: Esta ferramenta é responsável por duas operações no banco de dados: efetuar o backup e restaurar o banco de dados a partir de um backup (restore).

Back-up Opções do Gbak para Back-up são -b Back-up -v visualizar o processo -l ignora as limbos -se utiliza api de serviço -g ignora a coleta de lixo -ig ignora erros na base (recomendado realizar somente apos o gfix) -pass password do banco -user sysdba -z mostra a versão do firebird No linux o comando fica da seguinte forma /opt/firebird/bin/./gbak -b -v -l -g -user sysdba -pass masterkey -se localhost:service_mgr

/work/banco/sghdados.001 /work/banco/001.fbk No Windows fica na pasta Arquivos de programas/firebird/bin/ Você pode copiar o gbak.exe para a pasta banco e executar CMD gbak -b -v -l -g -user sysdba -pass masterkey -se localhost:service_mgr sghdados.001 001.fbk

Restore Opções do Gbak para restore -c cria uma nova base -r substitui o arquivo do banco -i inativa os índices -use preenche todo o espaço da página(não usar) -p define o tamanho da pagina -z mostra a versão do firebird -v visualiza o processo - user sysdba -pass senha do banco No linux o comando fica da seguinte forma /opt/firebird/bin/./gbak -c -v -p 8192 -user sysdba -pass masterkey -se localhost:service_mgr

/work/banco/001.fbk /work/banco/sghdados.002 (segurança) De preferência reiniciar o server ou tirar as permissões de gravação do banco anterior chmod 0 sghdados.001 e dar permissões ao sghdados.002 chmod 7 sghdados.002 No Windows fica na pasta Arquivos de programas/firebird/bin/ Você pode copiar o gbak.exe para a pasta banco e executar CMD gbak -c -v -p 8192 -user sysdba -pass masterkey 001.fbk sghdados.002

Obs: (no caso de fazer o backup via linha de comando no Windows ou Linux incluir a opção -se localhost:service_mgr para chamar a API de serviço do firebird porque quando não coloca ele usa o protocolo TCPIP que é mais lento por isso que o back-up e restore via linha de comando demora mais do que no iboconsole ibexpert e outras ferramentas que usam a API de serviço) isto somente quando for o superserver porque o classic Server já o faz.

Programa de Capacitação Profissional 2010

Página 6 de 15

Back-up No Iboconsole Restore no Iboconsole

Para que fazer Back-up Um Backup e Restore irá fazer com que: - As páginas (“pages”) na Base de Dados utilizadas pelas tabelas e índices sejam alocadas de forma contígua; - Os Índices sejam recalculados. A árvore de índices seja reconstruída.

- A selectividade dos índices seja recalculada para todos os índices.

- As páginas TIP (“transaction information pages” – páginas que contém toda a informação sobre as transações) que contém transações antigas (old transactions) e transações correntes (“current transactions”) sejam inicializadas e os contadores das transações sejam reiniciados. - No caso de corrupção após rodar o gfix para criar uma nova estrutura.

- Todas as páginas de dados que não são usadas sejam eliminadas.

(Parte 1 de 3)

Comentários