Apostila - Banco de Dados Firebird

Download Apostila - Banco de Dados Firebird

Post on 23-Oct-2015

329 views

Category:

Documents

57 download

TRANSCRIPT

Programa de Capacitao Profissional 2010 Pgina 1 de 15 SPDATA Servio de Processamento de Dados LTDA Treinamento de Banco de Dados Firebird Romilton Gonalves Dias Instrutor Objetivo: Qualificao dos Profissionais para Gerenciamento e Manuteno do Banco de Dados Firebird Objetivos Especficos: 1. Verso do Firebird utilizada no sistema SGH e projeto de homologao para Firebird 2.1 ....................... Pag 2 2. Novidades da verso 2.1 do Firebird .......................................................................................................... Pag 2 3. Diferena de SuperServer e ClassicServer (quando usar e como migrar) .................................................. Pag 4 4. Instalao do Firebird nas estaes Windows XP, Vista e Seven em Servidores Windows e Linux ........... Pag 4 5. Ferramentas Nativas Gbak, Gfix, Gstat, Gsec e isql .................................................................................... Pag 5 6. Configuraes e cuidados para melhor desempenho ................................................................................ Pag 9 7. Estrutura do banco de dados do sistema SGH ........................................................................................... Pag 9 8. Tipos de Erros e Corrupes ...................................................................................................................... Pag 9 9. Correo do banco de dados corrompido .................................................................................................. Pag 10 10. Ferramentas (isql, Iboconsole, Ibexpert,Putty, Grep ) ............................................................................... Pag 10 11. Comandos Bsicos Linux . Pag 11 12. Formas de configuraes do back-up Automtico (Linux e Windows) ...................................................... Pag 11 13. Restaurar banco de dados completo ou parcial ......................................................................................... Pag 12 14. Comandos SQL DML (Consultas, update, delete, insert) ............................................................................ Pag 13 15. Integrao do Sistema SGH entre os mdulos ........................................................................................... Pag 15 Contagem, 27 de Setembro de 2010 Programa de Capacitao Profissional 2010 Pgina 2 de 15 1 - Verso do Firebird utilizada no sistema SGH e projeto de homologao para Firebird 2.1 Atualmente a verso padro homologada pela equipe de desenvolvimento da SPdata Firebird 1.5 que est com a sua ltima verso Firebird-1.5.6.5026-0 e disponvel para download no site oficial www.firebirdsql.org. O Processo de homologao para verso do Firebird 2.1 est em fase final e ser disponibilizado nas prximas verses 2 - Principais novidades do Firebird 2.1 Monitoramento de banco de dados Talvez este seja o recurso mais aguardado para esta verso do Firebird. Aqueles que sempre quiseram saber o que se passava dentro de um banco de dados em um determinado momento, agora podero extrair essa informao atravs das tabelas virtuais de monitoramento! Note que, para ter acesso a esse recurso, sua base de dados deve estar com a ODS na verso 11.1. A recuperao das informaes de monitoramento feita atravs de selects normais, executados nas tabelas de monitoramento. importante saber que o acesso informao feito com a transao associada ao select de monitoramento no isolamento Consistency. Com isso, para atualizar as informaes recuperadas (refresh), necessrio fechar a transao atual e executar o select novamente, abrindo uma nova transao. Isso garante que as informaes de tabelas de monitoramento inter-relacionadas (mestre-detalhe) estaro sempre consistentes. A consulta completa das informaes de monitoramento s pode ser realizada pelo owner do banco de dados, ou pelo SYSDBA. Usurios normais s tm acesso s informaes relacionadas sua prpria conexo com o banco. As tabelas de monitoramento so: 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 grfico um deles o Sinatica que pode ser baixado do site oficial www.sinatica.com.br Programa de Capacitao Profissional 2010 Pgina 3 de 15 Cancelando comandos Atravs das tabelas de monitoramento, possvel cancelar queries ou comandos que esto sendo executados. Para isso, basta abrir uma conexo 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 esto sendo executados no banco de dados, e que no estejam associados conexo do SYSDBA (que est executando o cancelamento): delete from mon$statements where mon$attachment_id current_connection Otimizao do protocolo de comunicao 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 comunicao responsvel pela conversa entre a aplicao cliente e o servidor Firebird, que no foi originalmente escrito para ser usado em redes com banda limitada. A soluo definitiva para este problema vir em alguma verso futura do Firebird, com a criao de um novo protocolo de comunicao. No entanto, isso quebrar a compatibilidade de comunicao com servidores antigos. No Firebird 2.1, algumas rotinas do atual protocolo de comunicao foram otimizadas, de forma a gerar menos conversa entre o cliente e o servidor, sem perder a compatibilidade com as verses anteriores do Firebird. Em alguns casos, um ganho de performance de cerca de 40% pde ser observado nas conexes via internet. Para ter total proveito das otimizaes realizadas, necessrio que a conexo esteja usando o fbclient.dll da verso 2.1, e que o servidor tambm seja 2.1 (ou superior). Nota: Drivers que acessam diretamente o servidor, sem passar pela fbclient.dll (ex: JayBird e .NET Provider) devero ter seus cdigos atualizados para que tirem proveito das otimizaes. Pr-alocao de espao 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 espao, diminuindo a fragmentao do arquivo, o que causa um impacto positivo na performance de leitura do disco. No momento, este recurso est disponvel apenas para a verso Windows. O novo parmetro DatabaseGrowthIncrement pode ser configurado no firebird.conf, e determina o limite mximo (em bytes) que poder ser pr-alocado na requisio de alocao de espao para o banco de dados. O padro 128MB. Configurar esse parmetro com o valor zero desativa o recurso de pr-alocao. Nota: Em situaes muito especficas, havia a possibilidade de corrupo de um BD, caso a partio onde ele estivesse armazenado ficasse cheia. Para solucionar este problema, o Firebird 2.1, no momento de alocao de espao, faz com que as pginas criadas sejam imediatamente gravadas no disco. Isso significa que o Firebird est realizando uma operao de escrita adicional em relao ao modelo anterior, o que, em algumas situaes, pode afetar negativamente o desempenho. Backup Incremental Desde a verso 2.0 o Firebird foi incorporado o backup incremental com o aplicativo Nbackup. O nbackup um novo utilitrio de backup que vem junto com o Firebird 2.1 e oferece funcionalidades inexistentes no gbak, ferramenta de backup pr-existente no Firebird, porm, no substitui esse ltimo. Ambos os programas tm as suas vantagens e desvantagens e iro ainda coexistir provavelmente por algum tempo. Neste artigo, aprenda tudo sobre esse poderoso utilitrio. 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 Capacitao Profissional 2010 Pgina 4 de 15 3 - Diferena de SuperServer e ClassicServer (quando usar e como migrar) Super Server e Classic Server O Firebird possui duas verses: a verso Super Server a verso Classic Server. Entre as duas a diferena est na forma como est estruturada o gerenciamento das conexes dos clientes e processamento. 1. Na verso Super Server os recursos (valores recuperados do disco, consultas feitas) so compartilhados por todos os clientes conectados. Super vem de supervisor Ou seja somente um processo rodando no servidor para todos usurios. (fbserver) Caso pane ter de Parar o processo e todos os usurios! 2. J na verso Classic Server, cada cliente tem sua prpria instncia do banco de dados (fb_inet_server) e comunicam-se entre si atravs de um gerenciador de transaes (fb lock mgr). Ou Seja um processo no servidor para cada conexo no banco de dados caso de pane pode idenificar. Super Server ou Classic Server Qual Melhor? Nenhuma das duas verses melhor ou pior, cada uma adequa-se melhor a cada caso ou seja, necessita de anlise. Para determinadas situaes a verso Super Server mais recomendada (Servidor com pouca memria RAM, nmero mdio ou pequeno de clientes conectados, Servidor uniprocessado). Em outras situaes a verso Classic Server sai-se melhor (Muita memria RAM disponvel, Servidores multiprocessados muitas conexes simultneas). A vantagem da verso Classic Server tratar os usurios de forma independente, Uma desvantagem da mesma o consumo elevado da memria RAM (mas caso o server tenha muita memria RAM isto deixa de ser uma desvantagem). Para migrar de Super Server para Classic Server no Linux precisa alterar os buffers de pginas 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 instncias, o arquivo de configurao fica dentro da pasta /etc instances = 3000 cps = 50 100 No caso do Windows alterar somente os buffers de pfinas 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 - Instalao do Firebird nas estaes Windows XP, Vista e Seven Instalao 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 opo copiar Biblioteca para pasta de system Como defaul a senha do sysdba masterkey Para alterar via grfico Pode ser no Ibosonsole Na opo usurio e digite Por cima da senha existente e grave No windows fica C:\Arquivos de programas\Firebird\Firebird_1_5 ATENO Windows Vista e Seven Se voc estiver instalando em Windows Vista ou Seven, o instalador opo para instalar o Control Panel applet deve ser desativado para evitar ter que quebrar o Painel de Controle do seu sistema Windows. Programa de Capacitao Profissional 2010 Pgina 5 de 15 Instalao 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 verso 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 verso Classic Server configurar o xinet.d aumentar as instncias algumas distribuies do Linux necessitam de instalar libstdc++ No caso do Linux os pacotes Super Server e Classic server so separados o Classic Server FirebirdCS-1.5.5.4926-0.i686 tema diferena pelas letras CS 5 - Ferramentas Nativas Gbak, Gfix, Gstat, Gsec e isql Gbak: Esta ferramenta responsvel por duas operaes no banco de dados: efetuar o backup e restaurar o banco de dados a partir de um backup (restore). Back-up Opes do Gbak para Back-up so -b Back-up -v visualizar o processo -l ignora as limbos -se utiliza api de servio -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 verso 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 Opes do Gbak para restore -c cria uma nova base -r substitui o arquivo do banco -i inativa os ndices -use preenche todo o espao da pgina(no usar) -p define o tamanho da pagina -z mostra a verso 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 (segurana) De preferncia reiniciar o server ou tirar as permisses de gravao do banco anterior chmod 000 sghdados.001 e dar permisses ao sghdados.002 chmod 777 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 opo -se localhost:service_mgr para chamar a API de servio do firebird porque quando no 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 servio) isto somente quando for o superserver porque o classic Server j o faz. Programa de Capacitao Profissional 2010 Pgina 6 de 15 Back-up No Iboconsole Restore no Iboconsole Para que fazer Back-up Um Backup e Restore ir fazer com que: - As pginas (pages) na Base de Dados utilizadas pelas tabelas e ndices sejam alocadas de forma contgua; - Os ndices sejam recalculados. A rvore de ndices seja reconstruda. - A selectividade dos ndices seja recalculada para todos os ndices. - As pginas TIP (transaction information pages pginas que contm toda a informao sobre as transaes) que contm transaes antigas (old transactions) e transaes correntes (current transactions) sejam inicializadas e os contadores das transaes sejam reiniciados. - No caso de corrupo aps rodar o gfix para criar uma nova estrutura. - Todas as pginas de dados que no so usadas sejam eliminadas. - Nenhuma verso antiga (back version), delta ou registo esteja presente. - Nenhuma pgina de ndice de garbage (lixo) esteja presente. - Todas as tarefas so executadas por um sweep numa conexo nica Programa de Capacitao Profissional 2010 Pgina 7 de 15 Qual Tamanho de pgina usar? Existem quatro coisas relacionadas ao tamanho de pgina: profundidade dos ndices, tamanho do cache do BD, registros por pgina e tamanho do cluster de disco. A resposta mais simples usar 4096, 8192 ou 16384. (4k, 8k ou 16k) A estrutura bsica dos ndices uma rvore B-TREE, portanto a profundidade de um ndice depende do tamanho da pgina. Pginas pequenas (1K-2K) vo produzir rvores de quatro nveis sem precisar de muita quantidade de dados (ex: algumas centenas de milhares de chaves do tipo inteiro). recomendado que a profundidade de um ndice nunca passe de 3 (trs). Cache do banco o tamanho do cache no Firebird determinado multiplicando-se o valor do buffer pelo tamanho da pgina devemos ter o cuidados para no consumir toda memria RAM e um cuidado maior com o Classic Server que no compartilha memria ou seja cada conexo multiplica a quantidade do buffers x tamanho da pgina. Gfix O GFix a ferramenta de manuteno de bancos de dados Firebird. Atravs dela possvel executar uma srie de operaes de manuteno no banco de dados visando corrigi-lo tanto para continuar a us-lo, quanto para executar um posterior backup. Operaes de manuteno de performance tambm so feitas atravs desta ferramenta. A sintaxe bsica do GFIX : ./gfix -v -f -user sysdba -pass masterkey /work/banco/sghdados.001 As Opes so: -a acivate (ativa uma shadow) -b buffers (define a quantidade de paginas ficaro armazenadas em buffers) -c commit (comita uma limbo) -f full (avalia toda a base) -force (fora um shutdow) -h housekeeping (intervalo do sweep) -i (ignora erros) -list (lista limbos) -m (prepara banco corrompido para backup e restore) -online (coloca o banco online) -pass (senha master) -sweep (realiza limpeza e move odt) -shut (para o servio) -use (usar todo espao das novas pagina) -user sysdba -v (valida toda a estrutura do banco) -w (muda escrita do banco -z (mostra a verso do Firebird) Sintaxe gfix v f user sysdba pass masterkey /work/banco/sghdados.001 Gstat Esta ferramenta tem a funo de mostrar a estatstica do banco de dados -a dados e ndices -d paginas de dados -i ndices -l log da pagina -t nome das tabelas -h cabealho da pagina -user sysdba -pass senha do banco -s relacionamento -z verso -all todas as informaes do banco Sintaxe gstat h /work/banco/sghdados.001 Gsec Esta ferramenta tem a funo de gerenciar o usurio No linux cd /opt/firebird/bin No Windows c:\Arquivos de programas\Firebird\Firebird_1_5\bin Para modificar a senha digite gsec -user sysdba -password masterkey GSEC>> modi sysdba -pw hmcspd GSEC>> quit Pronto sua nova senha hmcspd No caso do linux pode tambm acessar o servidor pelo putty Execute :na pasta /opt/firebird/bin/ ./changeDBAPassword.sh Digite a senha ATIGA e tecle enter. Digite a senha NOVA e tecle enter. Programa de Capacitao Profissional 2010 Pgina 8 de 15 O que Forced-Writes? O termo forced-writes vem do ingls e significa forar-escritas. Vamos pensar no que acontece quando executamos um comando qualquer que adiciona, altera ou apaga dados do banco de dados. Por exemplo: insert into clientes(codigo, nome) values (1, "Joo") Forced-Writes Ligado O comportamento padro do Firebird gravar estes dados imediatamente no disco. Isto o Forced-Writes. O Firebird grava tudo no disco assim que recebe o comando. Desta forma depende diretamente do desempenho do HD Forced-Writes Desligado Quando o Forced-Writes est desligado, o Firebird no grava tudo imediatamente no disco. Ao invs disto, ele deixa estas pginas em memria por um tempo. Durante este tempo ele acumula em memria outras pginas que tambm devero ser escritas no disco. Por exemplo, se logo em seguida voc emitir outro comando: insert into clientes(codigo, nome) values (2, "Maria) Estas novas pginas no vo diretamente para o disco e sim para a memria, junto com as pginas geradas pelo primeiro comando. Quando esta memria estiver completa ou quando o tempo de permanncia nela expirar, todas as pginas sero escritas no disco de uma s vez isto torna a escrita mais eficiente e muito mais rpida. Programa de Capacitao Profissional 2010 Pgina 9 de 15 6 - Cuidados para bom funcionamento e melhor desempenho 1-Utilizar a verso FirebirdSS-1.5.6.5026-0.nptl.i686, back-up na verso atual e restore na 1.5.6 verses Classic Server devem ser avaliadas antes de migrar. 2-Verificar a necessidade de realizar back-up restore (ler o Gstat) 3-Tamanho de pgina de 4096 acima qualquer uma atende perfeitamente. 4-Sempre que der um shutdown no banco coloca-lo online 5-Colocar pginas em buffers para agilizar consultas (cuidado com RAM) no Classic Server no passar de 75 6-Mudar a escrita utilizando recursos do server (analisar necessidade) 7-Manter o banco fazendo reserva de espao na pgina 8- Copiar a fbclient.dll da instalao para as estaes c:\spdatai\ 9- No caso de servidor Windows verificar Fragmentao do disco 10- Desabilitar o sweep interval e programar em horrio mais tranqilo (se desabilitar o sweep obrigatrio programar algum horrio, o sweep tem um papel fundamental no desempenho do banco de dados) 11- No utilizar shadows caso necessite de bom desempenho 12- Servidor dedicado ao banco de dados (quando possvel) 13- Instalar o Firebird nas estaes 14- Nunca Copie o Banco de dados em USO (Ctr C Ctr V) 15- Back-up somente via gbak os outros fazem cpia 16- No realizar back-up e restore na estao e copiar para o Linux 17- Implantar uma estrutura correta Super Server ou Classic Server 7 - Estrutura do banco de dados do sistema SGH Conhecendo a estrutura do SGHDADOS. As duas letras referem ao mdulo do Sistema exemplo CC Centro cirrgico, CO Contabilidade, CR Central de Regulao, CT Controle Oramentrio, DI Diversos, FA Faturamento Ambulatrio, FC Faturamento de Convnios, FH Faturamento de AIH, FI AIH antiga, FP Folha de Pagamento, GC Prego, GE Gesto de Estoque, GP Patrimnio, MF Financeiro, PE Ponto eletrnico, PF Plano de Sade, PR Pronturio Eletrnico, PS Plano de Sade, RE Recepo externa, RI Recepo Interna, RP RPA, SC SAC, SI SADT (Exames), SH Hemoterapia, ST Segurana do Trabalho, TB Tabelas, VS Vigilncia Sanitria, ZN Zoonses. 8 - Tipos de Erros e Corrupes linuxserver (Client) Thu May 18 14:42:47 2006 /opt/firebird/bin/fbguard: guardian starting bin/fbserver 14 Esta mensagem indica que o banco de dados foi reiniciado. Ela ocorre tanto quando o Firebird reiniciado quando tambm quando ocorre algum problema grave com o banco de dados e ele finalizado. Neste caso o guardio (fbguard) reinicia o processo do banco de dados. No caso do Firebird Classic, isto no ocorre, pois a cada conexo de um usurio uma nova instncia do banco de dados inicializada. gbak: restoring data for table GLANSAI gbak: ERROR: validation error for column ID_GELANSAI, value "** null **" gbak: ERROR: warning -- record could not be restored gbak: Exiting before completion due to errors Indica que um campo possui um valor nulo (NULL) quando no pode possuir. Neste caso,temos que procurar os campos ID_GELANSAI na tabela GELANSAI que possuem NULL como valor. Neste caso o SQL seria: SELECT * FROM GELANSAI WHERE ID_GELANSAI IS NULL; E informar um valor para este campo nos registros achados; UPDATE GELANSAI SET IDGELANSAI=0 WHERE IS NULL Programa de Capacitao Profissional 2010 Pgina 10 de 15 Como encontrar duplicidade SELECT ANO, MES, CDC, DATA, ITEM, DOC FROM GEKONCDC GROUP BY ANO, MES, CDC, DATA, ITEM, DOC HAVING COUNT(DOC)>1 Assim que localizar a duplicidade avalie junto ao responsvel pelo setor qual dever ser excluida, exclua a duplicidade e ai sim realiza o processo de back-up e restore. Caso no aparecer a duplicidade no select devemos tomar outra medida que parar o sistema e exclur a PK realizar o back-up e restore e rodar novamente o select se ainda sim no encontrar crie novamente a PK com os devidos campos. O que compe o Group By so os campos pertencentes ao PK caso necessitar utilizar em outra tabela s substituir os referidos campos para os que tiverem na PK da tabela. 9 - Correo do banco de dados corrompido Caso ocorra do banco de dados corromper, o procedimento correto solicitar que todos saiam do sistema e garantir que no acessaram desabilitando o sistema e tomando os devidos cuidados. Neste caso devemos rodas os seguintes comandos de dentro da pasta opt/firebird/bin ./gfix -v -f user sysdba -pass masterkey /work/banco/sghdados.001 ./gfix -m -f -i user sysdba -pass masterkey /work/banco/sghdados.001 ./gbak -b -v -l -g -ig -user sysdba -pass masterkey -se localhost:service_mgr /work/banco/sghdados.001 /work/banco/001.fbk ./gbak -c -v -p 8192 -user sysdba -pass masterkey -se localhost:service_mgr /work/banco/001.fbk /work/banco/sghdados.002 No caso do Windows no precisa colocar ./e o caminho c: d: ou ip do servidor:\banco\sghdados.001 e tem de ser rodado de dentro da pasta C:\Arquivos de programas\Firebird\Firebird_1_5\bin ou copiar o gfix para pasta banco e rodar por l 10 - Ferramentas de manipulao ISQL O isql uma ferramenta nativa de acesso ao banco de dados sem modo grfico que acompanha na instalao do firebird com ele voc pode manipular os dados e a estrutura do banco com comandos DDL e DML, existem ainda os comandos nativos como: Comando SHOW: Se voc pensa que para listar todas as tabelas do banco de dados necessrio digitar um comando DML enorme, envolvendo as tabelas de sistema e tudo mais, a resposta no! Digite SHOW TABELES; e pronto! voc tem uma lista de todas as tabelas de seu banco, para listar uma especifica basta informa o nome show table ricadint;. Esse comando funciona tambm para triggers, views, procedures, indices, index, a prpria database, version, system, roles, domains, exceptions, filter, functions, generators e grants; OBS: Comandos do tipo "show" so rodados sobre transaes do tipo READ COMMITED Grep Utilitrio usado para localizar nome ou parte de um arquivo Em nossa empresa utilizamos para encontrar nome de campos em scripts Exemplo dentro da pasta scripts executar o comando grep -i nome do campo *.sql Putty PuTTy um cliente elaborado para protocolos SSH, Telnet e Rlogin. Com ele possvel logar-se a um computador multi- usurio atravs de outro, estabelecendo assim uma conexo remota entre cliente e servidor. Por exemplo, voc inicia o programa e conecta-se a outra, desta forma uma nova janela ser aberta para o envio de comandos e afins entre as duas mquinas conectadas. possvel trabalhar com um sistema Unix a partir de seu PC com este aplicativo. Usado para acessar servidores Linux Programa de Capacitao Profissional 2010 Pgina 11 de 15 11 - Comandos bsicos Linux ls -l (lista), cp (copia), mv (move), rm (deleta), mkdir (cria diretrio), vi (edita arquivo), cat (edita conteudo), kill (mata processo), find (pesquisa), grep (localizar), cd /(navegar), time (calcula o tempo), fuser (lista processo), htop (lista processos grfico), top, ps aux (lista processos), netstat (estatstica rede), nbtstat (identifica estao), vmstat (estatstica da memoria virtual), df (verifica espao livre), free, (status da memria) date (data do servidor), chmod (define permisses do arquivo, ping (verifica conexo), arp (exibe tabela arp). vmstat -n 1 50 (vai contar 50 processo a cada um segundo e trazer informo da memria ram, processador, leitura no disco ps aux | grep fb_inet_server| wc l (vai contar quantos processos existem com este nome rodando no servidor se voc trocar de fb_inet_server para :3050 trar todos os processos que utilizam a porta 3050 tambem pode ser o netstat no lugar do ps aux htop, top (trazem informaes de uso dos processadores e memria) date (mostra a data e hora do servidor) date mmddhhmmaaaa Onde: mm = Ms dd = Dia hh = Hora mm = Minutos aa = Ano (2001 = 20) aa = Ultimas duas casa do Ano (2001 = 01) # /sbin/clock w time ./gbak -b -v -user sysdba -pass masterkey /caminho do banco mostrar o tempo real que levou para fazer o back-up 12 - Formas de configuraes do back-up Automtico (Linux e Windows) Voc pode criar um script e programar para rodar no servidor No caso do Linux voc pode usar o crontab Sintaxe Crontab -e vai abrir uma console e a linha de comando pode ficar 00 06,12,18,00 * * * /banco/scriptdebackup.sh - 00 significa os minutos 06,12,18,00 so as horas que o backup ser realizado * * * todos os dias semanas e meses No corpo do script voc pode colocar da seguinte forma date > /var/log/gbak_d.log echo echo "Iniciando o Backup do Banco de Dados." echo cd / /opt/firebird/bin/gbak -b -g -l -se localhost:service_mgr /work/banco/sghdados.001 /work/backup/sghd_$(date +%d-%m-%Y-%H.%M).gbk -user sysdba -password masterkey >> /var/log/gbak_d.log echo # echo date >> /var/log/gbak_d.log echo "Fim do Backup." # echo date >> /var/log/gbak_l.log cd /work/backup gzip *.gbk Programa de Capacitao Profissional 2010 Pgina 12 de 15 No caso do Windows voc pode usar o agendador de tarefas e criar um arquivo.bat com os comandos do gbak ou utilizar ferramentas existentes como GBAK Scheduler 13 - Restaurar banco de dados completo ou parcial Para restaura um banco de dados voc ir precisar que o backup tenha sido feito em uma verso igual ou inferior do Firebird exemplo backup na verso 1.5 e restore na a.5 em diante, o backup necessita que tenha sido feito de modo transportvel default do Firebird caso no tenha sido feito ele s restaur ano prprio servidor que foi feito backup Sintaxe ./gbak -c -v -p 8192 -user sysdba -pass masterkey -se localhost:service_mgr /work/banco/001.fbk /work/banco/sghdados.002 Ou pelo Iboconsole conforme j mostrado acima Caso presisar voltar apenas uma tabela ou um registro, voc ir precisar utilizar uma ferramenta IBexpert que ser falado em outra edio mais aprofundado. Aps registrado o banco de dados, abra o editor de SQL F12 e selecione a tabela ou o registro que necessita restaura Programa de Capacitao Profissional 2010 Pgina 13 de 15 14 - Comandos SQL DML (Consultas, update, delete, insert) Linguagem de manipulao dos dados (DML) -Linguagem que define os comandos de manipulao e operao dos dados (comandos de consulta e atualizao dos dados dos arquivos). 1 - Comandos DML Objetivo: 1.1- Insert Incluir um novo registro em uma tabela do Banco de Dados. 1.2- Update Atualiza os dados de um ou um grupo de registros em uma tabela do Banco de Dados. 1.3- Delete Deletar um ou um grupo de registros em uma tabela do Banco de Dados. 1.4- Select Selecionar um conjunto de registros em uma ou mais tabelas que atenda a uma determinada condio definida pelo comando. Algumas funes utilizadas no comando Select. a) COUNT(*) Retorna a quantidade de registros existentes no campo especificado. Quando a opo * utilizada o resultado a quantidade de registros existentes. Quando referenciado o nome de um campo retorna a quantidade de valores existentes na coluna. b) SUM (Valor) Retorna a soma dos valores existentes no campo especificado. c) AVG (Valor) Retorna a mdia dos valores existentes no campo especificado. d) MAX (Campo) Retorna o maior valor existente no campo especificado. e) MIN (Campo) Retorna o menor valor existente no campo especificado f) DISTINCT Quando a opo DISTINCT utilizada so consideradas apenas os diferentes valores existentes no campo g) Where A clusula WHERE usada para extrair apenas os registros que cumprir um determinado critrio. h) and A clusula and usada aps o where para agregar critrios na consulta. i) Group by agrupa o resultado em subconjuntos que possuem valores correspondentes em uma ou mais colunas. J) Order by ordena o resultado pelo campo que determinado como default crescente, mas pode ser desc k) Between O operador BETWEEN serve para indicar um determinado intervalo de valores dentro de uma query l) Like Com este operador, podemos comparar cadeias de caracteres utilizando padres de comparao para um ou mais caracteres. Normalmente, o caracter percentual (%) substitui um ou mais caracteres e sublinha (_) substitui um caracter Junes Tipos de Joins: LEFT JOIN, RIGHT JOIN, INNER JOIN e FULL JOIN LEFT JOIN: Como podemos observar, e a prpria sintaxe indica, essa clusula trabalha com os dados da tabela "Esqueda" como sendo os dados principais, ou seja, de acordo com o exemplo abaixo, o LEFT JOIN mostrar o que esta na geitens (esquerda), podendo trabalhar tambm com qualquer outro dado da gevalmem com a mesma chave encontrada na geitens select a.cod,a.nome,a.estoque,b.item,b.qtde,b.lote from geitens a left join gevalmem b on a.cod=b.item where a.estoque (select sum(b.qtde) from gevalmem b where a.cod=b.item) and b.qtde>0 and a.classif = 2 order by a.cod O RIGHT JOIN retorna o que estiver na Tabela1 e Tabela2 com a mesma chave, e sendo o inverso do LEFT JOIN a tabela principal se torna a tabela da " Direita ", gevalmem select a.cod,a.nome,a.estoque,b.item,b.qtde,b.lote from geitens a right join gevalmem b on a.cod=b.item where a.estoque (select sum(b.qtde) from gevalmem b where a.cod=b.item) and b.qtde>0 and a.classif = 2 order by a.cod O INNER JOIN nos retorna apenas o que esta na geitens e gevalmem com a mesma chave. J O FULL JOIN retorna o que estiver na Tabela1 e Tabela2 levando em conta o seu significado FULL, ou seja, completo. Portanto O FULL JOIN retorna tudo o que h nas Tabelas selecionadas Exemplos de comandos SQL Select * from ricadpac (lista todos os registros da tabela de pacientes) Select nome,mae,nasc, from ricadpac (lista somente nome, mae e data de nascimento da tabela de pacientes) Programa de Capacitao Profissional 2010 Pgina 14 de 15 Select nome,mae,nasc from ricadpac where nasc >01.01.2008 (lista somente quem nasceu de 01/01/2008 em diante) Select nome,mae,nasc from ricadpac where nasc >01.01.2008 and nome like Maria% (lista somente quem nasceu de 01/01/2008 em diante e que o nome comee com Maria) Select nome,mae,nasc from ricadpac where nasc >01.01.2008 and nome like Maria% and pront in (select pront from ricadate) (lista somente quem nasceu de 01/01/2008 em diante e que o nome inicie com Maria e tenha um registro gerado na tabela de atendimentos) Select count(*) from ricadpac (conta todos os registros da tabela) Select distinct(cidade) from ricadpac (lista todas as cidades do cadastro de pacientes trazendo apenas uma de cada) Exemplos Prticos do Dia a Dia Soma valor de sada de um item do estoque select sum(vlrmed)as soma_do_item from gelansai where item =19 Update por intervalo update tbtabthm set tipoato=15 where tab=37 and cod between ' 28010000' and ' 28160002' Saber quantidade de contas do ano de 2008 select mespro, anopro,con as convenio, tipo_cta, count (cod)as conta from fcctaext where fechada = A' and anopro=2008 and alta between '01.01.2008' and '31.12.2008' group by mespro, anopro, con, tipo_cta order by mespro Guias digitadas na recepo diferente do Faturamento select a.reg,a.conv,a.segurado,a.senha,a.dt_ate,a.guia as guia_atendimento,b.guia as guia_faturamento from recadate a left join fcctaext b on a.reg=b.cod where a.conv >3 and a.guia b.guia order by dt_ate desc Matrculas digitadas na recepo diferente do Faturamento select a.reg,a.conv,c.nome "Paciente",a.dt_ate,a.usuario,a.matricula "Matricula de atendimento", b.matricula "Matricula de faturamento",data_emi,usu_emi "Usurio Faturamento" from recadate a inner join fcctaext b on a.reg=b.cod and a.mespro=b.mespro and a.anopro=b.anopro inner join ricadpac c on a.pront=c.pront where a.conv >2 and a.matricula b.matricula and tipo_cta='E' and b.anopro=2009 and data_emi'30.12.1899' order by dt_ate desc Saber quais pronturios no tem atendimentos ou internao: select a.dtcad, a.pront as prontuario, a.nome,b.reg as internacao, c.reg as atendimento, d.reg as atendimento_SADT from ricadpac a left join ricadint b on a.pront=b.pront and a.tipopac=b.tipopac and a.otmu=b.otmu left join recadate c on a.pront=c.pront and a.tipopac=b.tipopac and a.otmu=c.otmu left join sicadate d on a.pront=d.pront where b.reg is null and c.reg is null and d.reg is null order by a.dtcad desc Motivo de alta diferente do faturamento select a.reg,a.conv,a.entrada,a.alta,a.motivo "Interna",c.nome,a.useralt,b.motivo "Faturamento",d.nome,usu_emi from ricadint a inner join fcctaext b on a.reg=b.cod and a.anopro=b.anopro and a.mespro=b.mespro inner join tbmotalt c on a.motivo=c.cod inner join tbmotalt d on b.motivo=d.cod where b.anopro=2009 and a.motivob.motivo order by reg Procedimentos mais usados na internao select count(procto) TOTAL,procto,NOME_PROC from fclanext where anopro=2009 and tipo_cta= 'I'and tipo=2 group by procto,NOME_PROC order by 1 desc Cep fora da tabela do SUS e paciente atendido conv 1 select pront,nome,mae from ricadpac where cep not in (select cep from tbsuscep) and pront in (select pront from ricadint where conv = 1) order by pront Programa de Capacitao Profissional 2010 Pgina 15 de 15 Update em uma tabela buscando informaes de outra update tbrefuni u set u.codref=(select ref_tiss from tbmatmed where tab=99 and cod= (select bras from tbmatmed where tab=u.tab and cod=u.cod)) where u.tab=2 Tempo mdio de entrega das contas select con "Convnio",avg(cast(cast(data_apres as timestamp) - alta as integer)) "Tempo mdio de entrega das contas" from FCCTAEXT where anopro=2009 and data_apres is not null and data_apres '30.12.1899' group by con 15 - Integrao entre os mdulos do sistema