Vous êtes sur la page 1sur 29

Utilitários em Linha de Comando do

Firebird
Norman Dunbar
Utilitários em Linha de Comando do Firebird
Norman Dunbar
Tradução para o Português do Brasil: Fabricio Araújo

Publicado 2004
Copyright © 2004 Norman Dunbar
Índice
1. Introdução ...................................................................................................................... 5
2. GSEC – Utilitário do Arquivo de senhas do Firebird ......................................................... 7
Introdução .......................................................................................................... 7
Opções em linha de comando .............................................................................. 8
Comandos do GSEC ........................................................................................... 9
Modo Interativo ................................................................................................ 11
Mostrando os detalhes do usuário ...................................................................... 11
Adicionando novos usuários .............................................................................. 12
Eliminando Usuários ......................................................................................... 12
Alterando informações de Usuários .................................................................... 12
Ajuda ............................................................................................................... 13
Informação de versão ........................................................................................ 13
Modo Em lote .................................................................................................. 13
Mostrando Detalhes do Usuário ......................................................................... 14
Adicionando novos usuários .............................................................................. 14
Eliminando Usuários ......................................................................................... 14
Alterando Informação de Usuários ..................................................................... 15
Informação de versão ........................................................................................ 15
Executando GSEC Remotamente ....................................................................... 16
Novidades do Firebird 2.0 ................................................................................. 16
Truques do GSEC ............................................................................................. 17
Usuários Normais versus Usuários Privilegiados ................................................ 17
Differenças entre Modo Lote e Interativo ........................................................... 17
Códigos de Saída em Modo Lote ....................................................................... 18
Erros em Modo Lote Muda para o Modo Interativo ............................................. 18
3. GSPLIT – O filtro de arquivos de backup divididos do Firebird ....................................... 19
Introdução ........................................................................................................ 19
Opções de linha de comando GSPLIT ................................................................ 20
Parâmetros dos Comandos do GSPLIT ............................................................... 20
Dividindo Backups ........................................................................................... 21
Juntando Arquivos de Backup ........................................................................... 22
4. Diversos Script para Firebird em Sistemas Linux/Unix .................................................... 23
Introdução ........................................................................................................ 23
Mudando a senha do SYSDBA .......................................................................... 23
Criando nomes de alias de banco de dados ......................................................... 24
Parâmetros createAliasDB.sh ............................................................................ 25
Uma ajuda com arquivos make .......................................................................... 25
Opções fb_config ............................................................................................. 25
Mudando o usuário de execução do servidor Firebird .......................................... 26
Parâmetros do SSchangeRunUser.sh .................................................................. 27
Restaurando root como o Usuário de execução do Servidor Firebird .................... 27
Rodando aplicações embarcadas ou cliente/servidor ............................................ 28
5. Próximos utilitários ....................................................................................................... 29

iv
Capítulo 1

Introdução
O kit de distribuição do Firebird 1.5 instala um conjunto de programas utilitários para ajudar na utili-
zação do seu servidor e bancos de dados Firebird. Este livro introduz você para os vários utilitários,
alguns mais úteis do que outros.

Todos estes utilitários podem ser encontrados no diretório /bin em ambiente Unix (ou na pasta \bin
em Windows) abaixo da raiz da instalação do Firebird. No Linux esses utilitários podem ser achados
em /opt/firebird/bin enquanto que em Windows, a localização padrão é em c:\program
files\firebird\firebird_1_5\bin.

Nota
do Tradutor: nas versões em Português do Windows, a localização padrão é em c:\Arquivos de
Programas\firebird\firebird_1_5\bin.

• FB_LOCK_PRINT é o utilitário que imprime detalhes da página de travamentos internais do ban-


co de dados.

• GBAK é utilitário de backup e restore do banco de dados. Também permite alterar vários parâme-
tros internos do banco de dados.

• GDEF é um utiltário de metadados que foi removido na época do Interbase 4.0 e retornou na ver-
são 6 de código aberto. A funcionalidade do mesmo é provavelmente redundante.

• GFIX permiter tentar consertar bancos de dados corrompidos, inicializar e parar bancos de dados,
resolver transações "no limbo" em múltiplos bancos de dados, mudar o número de buffers de pági-
na e outras coisas mais.

• GPRE é o pré-processador que converte código fonte, o qual pode ser escrito em um certo número
de linguagens, contendo vários "pseudo-códigos" SQL embutidos em chamadas para o engine do
Firebird.

• GSEC é utilitário de manipulação do banco de dados de segurança. Ele permite ao DBA (ou qual-
quer usuário privilegiado) manter contas de usuários para vários bancos de dados do Firebird.
Usando suas várias opções, usuários podem adicionados, eliminados ou seus dados atualizados no
banco de dados de segurança.

• GSPLIT é um filtro que permite "passar por cima" de limitações de tamanho máximo de arquivos,
achados em alguns sistemas operacionais, ao criar backups de grandes bancos de dados. Este utili-
tário é distribuído para Windows somente e, infelizmete, parece não funcionar. Por sorte nossa,
GBAK permite que os arquivos de backup possam ser quebrados em várias partes, de modo que
GSPLIT não é necessário. Em sistemas Unix existem utilitários do sistema operacional que podem
ser utilizados em lugar do GSPLIT, se necessário.

• GSTAT permite ao administrador do Firebird a capacidade de obter estatísticas sobre a saúde geral
e utilização de várias partes do banco de dados.

• ISQL é o utilitário interativo que permite a execução de consultas ad-hoc contra um banco de da-
dos Firebird. É uma ferramenta console (modo texto) - assim como muitos dos utilitários - e é for-

5
Introdução

necido com todas as distribuições do Firebird. ISQL é usualmente o melhor lugar para testar seus
scripts e comandos pela primeira vez.

• QLI é Interpretador de Linguagem de Consulta que foi removido a partir do Interbase 4.0 mas re-
tornou no Interbase 6.0 por causa da decisão de abrir o código do Interbase

• Existem vários scripts de shell que são instalados sob Linux e outros sistemas Unix.

Nota
Este livro é um trabalho em progresso. Cada capítulo detalha um utilitário separado e assim que o
cada um é completado de forma satisfatória para mim, eu o adicionarei ao repositório do CVS onde
estarão disponíveis para download. Dessa maneira, será um trabalho lento e gradual de criação de
manuais úteis.

6
Capítulo 2

GSEC – Utilitário do Arquivo


de senhas do Firebird

Introdução
GSEC é o utilitário de segurança de banco de dados. Ele permite ao DBA (ou qualquer usuário privi-
legiado) a capacidade de manter contas de usuário para vários bancos de dados Firebird. Usando vári-
as opções, usuários podem ser adicionados, alterados ou eliminados do banco de dados de segurança.

Nota
É possível em alguns sistemas operacionais que usuários que não são capazes de rodar o GSEC, até
mesmo sabendo a senha do usuário SYSDBA. Isto acontece por cause que esses SOs permitem ao
administrador configurar permissões de sistema de arquivos as quais previnem a execução de certos
programas ou utilitários por razões de segurança.

O BD (banco de dados) Firebird que guarda os detalhes de todos os usuários é BD de segurança. Este
é localizado num banco de dados normal chamado security.fdb. A localização padrão para este
arquivo está em:

• C:\Program Files\Firebird\Firebird_1_5 para o Windows (C:\Arquivos de


Programas\Firebird\Firebird_1_5 para as versões em português) .
• /opt/firebird para Linux e outros sistemas Unix.

O BD de segurança tem duas tabelas, usuário e host_info. A tabela host_info é vazia e a tabela de usu-
ários guarda todos os detalhes de cada usuário com acesso permitido a qualquer BD do Firebird. Ten-
do dito isso, roles de banco e privilégios irão prevenir usuários logando e manipulando BDs aos quais
eles não possuem direitos.

O utilitário GSEC manipula dados na tabela de usuários no BD de segurança, e fazendo isto, permite
que sejam adicionados, alterados e eliminados usuários do sistema. Nem todas as colunas na tabela de
usuários podem ser mostradas, mesmo que possam ser alteradas. A colunas da senha do usuário nunca
é mostrada pelo GSEC, mas você pode mudá-la, por exemplo.

Assim como mutios utilitários em linha de comando que vêm como o Firebird, GSEC pode ser execu-
tado em modo interativo ou em modo lote, e possui uma tela de help mostrando todas as opções do
utilitário; nós veremos isso um pouco mais tarde.

Vindo após este capítulo, teremos

• Opções em linha de comando para o GSEC.


• Comandos do GSEC e seus parâmetros.
• Rodando GSEC em modo em lote ou interativo, ambos permitirão a você:
- Mostrar detalhes do usuário.
- Alterar detalhes do usuário.

7
GSEC

- Adicionar novos usuários.


- Eliminar usuários existentes.
• Usando GSEC para administrar um BD de segurança remoto.
• Algumas dicas, truques e malandragens do GSEC.

Opções em linha de comando


Independente do modo que o GSEC está rodando, existem um número de opções que podem ser adici-
onadas na linha de comando. Essas são:

• -user <username>

Permite que o nome do usuário sysdba seja especificado se o BD está para ser modificado, ou um
nome de usuário normal se o banco é para apenas mostrado. Não é necessário se as variáveis de
ambiente ISC_USER e ISC_PASSWORD existirem e estiverem com os valores corretos.

• -password <password>

Especifica a senha para o nome de usuário na opção acima. Não é necessário se as variáveis de am-
biente ISC_USER e ISC_PASSWORD existirem e estiverem com os valores corretos.

• -role <SQL role name>

Especifica a sql role que será utilizada para usuário que está conectando.

• -database <security database name>

Você pode especificar o caminho completo do BD de segurança que o GSEC acessará e com isso
administrar remotamente os usuários daquele servidor. Este parâmetro será censurado (no sentido
de que não se deve utilizar esta opção) a partir da versão 2.0 do Firebird, quando então deverá ser
utilizada a opção -server .

• -server <server name>

Esta opção vale apenas para versão 2.0 do Firebird. Entretanto, ela pode ser utilizada para manu-
tenir o BD de segurança para versões anteriores do Firebird e, desejamos, versões do Interbase da
6.0 em diante. Ela conecta você ao BD de segurança do servidor Firebird nomeado e permite que
você mantenha os detalhes de usuários mesmo não sabendo exatamente onde está o BD de segu-
rança no servidor remoto.

• -z

Mostra o número de versão do GSEC.

• -help

Mostra a seguinte tela de informação:


gsec utility - maintains user password database
command line usage:
gsec [ <options> ... ] <command> [ <parameter> ... ]
interactive usage:
gsec [ <options> ... ]
GSEC>
<command> [ <parameter> ... ]

8
GSEC

available options:
-user <database administrator name>
-password <database administrator password>
-role <database administrator SQL role name>
-database <security database>
-z
available commands:
adding a new user:
add <name> [ <parameter> ... ]
deleting a current user:
delete <name>
displaying all users:
display
displaying one user:
display <name>
modifying a user's parameters:
modify <name> <parameter> [ <parameter> ... ]
help:
? (interactive only)
help
displaying version number:
z (interactive only)
quit interactive session:
quit (interactive only)
available parameters:
-pw <password>
-uid <uid>
-gid <uid>
-fname <firstname>
-mname <middlename>
-lname <lastname>

Comandos do GSEC
Após as opções sortidas, vêm agora os comandos que você deseja executar. Os seguintes comandos
valem tanto em modo interativo como no modo em lote, mas no modo interativo os traços ('-') antes
dos comandos não são necessários.

• -add <name> [ <parameter> ... ]

Este comando adiciona um novo usuário ao BD. Você pode opcionalmente adicionar outros deta-
lhes como nome e também a senha para o novo usuário, tudo no mesmo comando add. Alternati-
vamente, você pode adicionar o usuário e depois usar o modify para preencher os detalhes faltan-
tes.

Nota
do Tradutor: A informação nome (name) na verdade foi quebrada em 3 campos no BD de segu-
rança do Firebird: FIRST_NAME, MIDDLE_NAME e LAST_NAME. Existe também um quar-
to campo calculado FULL_NAME que é a concatenação dos outros 3. Isso é bem tipicamente
anglo-saxão. Outra curiosidade é que eles alocaram para as informações de nome o equivalente
um varchar de quase 300 caracteres; enquando que aqui o comum é um varchar de 150 caracte-
res quando tanto.

9
GSEC

• -delete <name>

Este comando remove o usuário nomeado acima do banco. Todos os detalhes do usuários são re-
movidos e não pode desfeito. Caso precise, adicione o usuário novamente.

• -display [ <name> ]

Este comando mostra os detalhes de um usuário, ou de todos os usuários caso nenhum nome de
usuário tenha sido especificado. A senha nunca é mostrada.

• -modify <name> <parameter> [ <parameter> ... ]

Modifica os detalhes e informações do usuário

A opção <name> é como você deseja que o usuário seja conhecido quando conectando a BD do Fire-
bird. Alguns dos comandos acima precisam de parâmetros e estes são um, ou mais dos seguintes:

• -pw <password>

Este parâmetro permite que você especifique uma nova senha para seu usuário. Se você omitir a
senha, a senha corrente será removida e o usuário será incapaz de conectar a qualquer BD Firebird.
A senha pode ter mais de 8 caracteres, mas quando especificar uma para o GSEC, ou logando em
BDs, os caracteres extras serão sumariamente ignorados.

• -uid <uid>

• -gid <gid>

-uid e -gid são usados em alguns sistemas POSIX para entrar o userid e groupid do Unix como
encontrados nos arquivos de configuração /etc/password e /etc/group . Caso não especifi-
cados, assumese o valor zero por padrão.

• -fname [ <first name> ]

Este parâmetro permite que você armazene o prenome do usuário no BD. Isto ajuda identificar usu-
ários a partir do nome de login - o qual pode ser abreviado. Você pode eliminar o prenome bastan-
do não especificar um.

• -mname [ <middle name> ]

O mesmo do acima, só que se aplicando ao nome do meio.

• -lname [ <lastname> ]

Idem, ibidem aos dois acima, só que aplicando-se ao sobrenome.

10
GSEC

Modo Interativo
Para usar o GSEC em modo interativo, inicie o utilitário com esta linha de comando:
C:\>gsec -user sysdba -password masterkey
GSEC>

Nota
Óbvio que a senha do SYSDBA deve ser modificada em um sistema de produção. A linha de co-
mando acima só se aplica a sistemas recém-instalados ou de desenvolvimento local.

O prompt GSEC> mostrado acima indica que o utilitário está esperando por um comando. As opções
-user e -password são as do usuário que deseja manipular o BD de segurança. Obviamente o nome de
usuário deve ser de um usuário sysdba válido se o objetivo é efetuar alterações. Usuários podem ape-
nas ler o BD.

Para sair do GSEC em modo interativo, se usa o comando quit:


GSEC> quit
C:\>

As seguintes seções mostram como efetuar vários comandos em modo interativo. É assumido que vo-
cê esteja rodando o utilitário como sendo o usuário sysdba.

Mostrando os detalhes do usuário


Para mostrar todos os usuários no BD de segurança, o comando e o seu resultado são:
GSEC> display
user name uid gid full name
------------------------------------------------------------------------
SYSDBA 0 0
NORMAN 0 0 Norman Dunbar
EPOCMAN 0 0 Benoit Gilles Mascia
GSEC>

Para mostrar detalhes de um único usuário, passe nome do usuário como parâmetro para o comando
display:

GSEC> display epocman


user name uid gid full name
------------------------------------------------------------------------
EPOCMAN 0 0 Benoit Gilles Mascia
GSEC>

Se você entrar o nome de um usuário não existente como parâmetro para o comando display, nada
é mostrado e o GSEC continua em modo interativo.
GSEC> display alison
GSEC>

11
GSEC

Adicionando novos usuários


Ao adicionar um novo usuário em movo interativo, nada é mostrado para confirmar que o usuário foi
realmente adicionado. Você precisa usar o comando display ou display <name> para se certifi-
car de que o usuário foi adicionado com sucesso.
GSEC> add newuser -pw newuser -fname New -lname User
GSEC>
GSEC> display newuser
user name uid gid full name
------------------------------------------------------------------------
NEWUSER 0 0 New User
GSEC>

Eliminando Usuários
Da mesma forma que no comando de adicionar, não há confirmação de que o usuário foi realmente
eliminado. Você precisa usar o comando display ou display <name> para se certificar de que o
usuário foi eliminado com sucesso.
GSEC> delete newuser
GSEC>
GSEC> display
user name uid gid full name
------------------------------------------------------------------------
SYSDBA 0 0
NORMAN 0 0 Norman Dunbar
EPOCMAN 0 0 Benoit Gilles Mascia
GSEC>

Mas, de outra forma, você tentar eliminar um usuário inexistente, GSEC mostrará uma mensagem de
erro, e irá para o SO:
GSEC> delete newuser
record not found for user: NEWUSER
C:\>

Alterando informações de Usuários


Usuários já existentes podem ter uma ou mais de suas informações (como prenome, nome do meio,
sobrenome ou senha) alteradas. Mais uma vez não há confirmação de que a modificação ocorreu com
sucesso, então use o comando display como descrito nas seções de outros comandos.
GSEC> modify norman -pw newpassword
GSEC>
GSEC> modify norman -mname MiddleName -fname Fred
GSEC>
GSEC> display norman
user name uid gid full name
------------------------------------------------------------------------
NORMAN 0 0 Fred MiddleName Dunbar

12
GSEC

GSEC>

Se você deseja remover uma ou mais das informações do usuário, não passe um novo valor para esse
atributo.
GSEC> modify norman -mname -fname -lname
GSEC> display norman
user name uid gid full name
------------------------------------------------------------------------
NORMAN 0 0

Agora eu posso ser conhecido como "o homem sem nome", assim com o Clint Eastwood!

Ajuda
O comando help, em modo interativo, mostra a mesma tela de ajuda mostrada acima.

Informação de versão
A versão do GSEC pode ser obtida usando o comando z.
GSEC> z
gsec version WI-V1.5.0.4306 Firebird 1.5
GSEC>

Modo “Em lote”


Nota
As seguintes descrições de operações em modo lote, assume-se que tenha-se configurado as variá-
veis de ambiente ISC_USER e ISC_PASSWORD. Elas permitem rodar o GSEC sem ter que especifi-
car as opções -user e -password. O reduzindo, por sua vez, a quantidade de código na linha de
comando - significando que quando este arquivo XML for renderizado num PDF, toda a linha de
comando caiba numa única linha de uma página A4.

Não é seguro manter essas variáveis configuradas todo o tempo, então não deixe-as assim!

Atenção
Em modo lote, quando você achar que pode verificar o resultado de uma operação consultando
%ERRORLEVEL% em Windows ou $? em vários sabores de Unix. Isto não funciona, pois o resultado
sempre retorna zero.

Em modo lote, a linha de comando para rodar o GSEC é a seguinte:


gsec [ <options> ... ] <command> [ <parameter> ... ]

13
GSEC

Mostrando Detalhes do Usuário


Para mostrar todos os usuários no BD de segurança, o comando e sua respectiva saída seguem:
C:\>gsec -display
user name uid gid full name
------------------------------------------------------------------------
SYSDBA 0 0
NORMAN 0 0 Norman Dunbar
EPOCMAN 0 0 Benoit Gilles Mascia

Para mostrar detalhes de um único usuário, passe nome do usuário como parâmetro do comando
display:

C:\>gsec -display epocman


user name uid gid full name
------------------------------------------------------------------------
EPOCMAN 0 0 Benoit Gilles Mascia

Nota
do Tradutor: Nas próximas duas seções, ambos os comandos abordados não retornam confirmação
de que a operação foi efetuada com sucesso. Você deve usar a o comando -display ou -
display <name> para verificar.

Adicionando novos usuários


Abaixo o comando e sua respectiva saída:
C:\>gsec -add newuser -pw newuser -fname New -lname User
C:\>gsec -display
user name uid gid full name
------------------------------------------------------------------------
SYSDBA 0 0
NORMAN 0 0 Norman Dunbar
NEWUSER 0 0 New User
EPOCMAN 0 0 Benoit Gilles Mascia

Eliminando Usuários
Abaixo o comando e sua respectiva saída:
C:\>gsec -delete newuser
C:\>gsec -display
user name uid gid full name
------------------------------------------------------------------------
SYSDBA 0 0
NORMAN 0 0 Norman Dunbar
EPOCMAN 0 0 Benoit Gilles Mascia

14
GSEC

Alterando Informação de Usuários


Usuários existentes podem ter uma ou mais de suas informações alteradas.
C:\>gsec -modify norman -pw newpassword
C:\>gsec -modify norman -mname MiddleName -fname Fred
C:\>gsec -display
user name uid gid full name
------------------------------------------------------------------------
SYSDBA 0 0
NORMAN 0 0 Fred MiddleName Dunbar
EPOCMAN 0 0 Benoit Gilles Mascia

Se você deseja remover um ou mais informações do usuário, não passe um novo valor para esse atri-
buto.
C:\>gsec -modify norman -mname -fname -lname
C:\>gsec -display
user name uid gid full name
------------------------------------------------------------------------
SYSDBA 0 0
NORMAN 0 0
EPOCMAN 0 0 Benoit Gilles Mascia

Agora ninguém sabe quem eu sou... ;o)

Informação de versão
A versão do GSEC pode ser obtida usando o comando -z . Porém, note que após a execução desse
comando, o modo interativo será ativado. Ele não sai assim como os outros comandos em lote, de mo-
do que você tem que utilizar o comando interativo quit para sair. Este uma solução de contorno, a
qual segue. A primeira parte mostra o problema.
C:\>gsec -z
gsec version WI-V1.5.0.4306 Firebird 1.5
GSEC>

A solução é ter um pequeno arquivo contendo o comando quit e forçar GSEC a ler este arquivo
quando necessitar de entrada de dados do usuário, como segue:
C:\>copy con fred
quit
^Z
1 file(s) copied.
C:\>gsec -z <fred
gsec version WI-V1.5.0.4306 Firebird 1.5
GSEC>
C:\>

Isto pode ser uma boa idéia para qualquer dos comandos que deixam você "preso" no modo interativo
quando deveria estar rodando em lote. Redirecionando a entrada de arquivo de comando, GSEC lerá a
linha de texto desse arquivo a qualquer momento que necessitar entrada de usuário. Forçando-o a ler o
comando quit , você consegue sair.

15
GSEC

Nota
O comando -z não necessita de um -user e -password, ele mostrará os detalhes da versão e en-
tão dirá a você que não tem um nome/senha - mas você pode ignorar tranqüilamente a mensagem.

Executando GSEC Remotamente


GSEC pode ser usado para administrar o BD de segurança num servidor remoto. Para isto você deve
especificar o nome do BD de segurança na linha de comando como mostrado no seguinte exemplo
que conecta meu cliente GSEC em Windows XP como o meu servidor Linux chamado Ganymede e
permite que eu gerencie usuários no meu servidor Linux.
C:\>gsec -database ganymede:/opt/firebird/security.fdb
-user sysdba -password masterkey
GSEC>

Nota
No exemplo acima, eu quebrei a linha de comando em duas linhas. Isto é para prevenir a mesma
"caia fora"do lado direito da página quando renderizada como um documento PDF. O comando in-
teiro pode, e deve, ser digitado em uma única linha.

Uma vez conectado no BD de segurança remoto, você pode manipular usuários da maneira normal
tanto em modo interativo e ou em lote (como descrito acima).

Novidades do Firebird 2.0


Sob o FIrebird 2.0, existe uma nova opção de linha de comando -server a qual permite ao admins-
trador a capacidade de manter detalhes de usuários remotamente sem ter que relembrar o caminho
completo do BD de segurança em todos os servidores Firebird.

Usando esta nova opção em linha de comando é similar a corrente opção -database, porém, sob o
Firebird 2.0 a opção -database será censurada e completamente removida numa versão futura.

Tomando o exemplo de acesso remoto acima, no Firebird 2.0 a linha de comando será similar a isto:
C:\>gsec -server ganymede -user sysdba -password masterkey
GSEC>

A versão do GSEC provida com o Firebird 2.0 pode ser utilizada para manter BDs de segurança de
versões anteriores do FIrebird e, é esperado, versões do Interbase apartir da 6.0 e acima. Entretanto,
na versão 2.0 do Firebird, o formato do BD de segurança será mudado e por causa disto, GSEC de
versões anteriores não poderão ser utilizados para manter o BD de segurança do Firebird 2.0

16
GSEC

Truques do GSEC
A seguir uma linha resumida de truques e idiossincrasias que detectei no meu uso do GSEC. Alguns
desses já foram mencionados acima, outros podem não ter sido. Coletando todos em um só lugar, vo-
cê poderá ser capaz de descobrir o que está acontecendo se tiver problemas.

Usuários Normais versus Usuários Privilegiados


Apenas um usuário sysdba pode alterar o BD de segurança. Usuários normais podem rodar o GSEC,
mas apenas listar os conteúdos. A seguir mostramos o que acontece quando tentar alterar o banco
quando rodando GSEC como um usuário normal.
C:\>gsec -user norman -password norman
GSEC> add myuser -pw mypassword
add record error
no permission for insert/write access to TABLE USERS

Usuários normais podem apenas mostrar os detlhes do BD de segurança.


C:\>gsec -user norman -password norman -display
user name uid gid full name
------------------------------------------------------------------------
SYSDBA 0 0
NORMAN 0 0 Norman Dunbar
EPOCMAN 0 0 Benoit Gilles Mascia

Differenças entre Modo Lote e Interativo


Os comandos do GSEC aplicam-se a ambos os modos de operação, porém, quando rodando em modo
lote, você deve prefixar o comandos com um traço (-) ou será apresentada uma mensagem de erros si-
milar a seguinte:
C:\>gsec -user sysdba -password masterkey display
invalid parameter, no switch defined
error in switch specifications
GSEC>

Note também que você será deixado em modo interativo quando um erro ocorrer. A linha de comando
correta deve ter um traço na frente do comando display, como segue:
C:\>gsec -user sysdba -password masterkey -display
user name uid gid full name
------------------------------------------------------------------------
SYSDBA 0 0
NORMAN 0 0 Norman Dunbar
EPOCMAN 0 0 Benoit Gilles Mascia

Desta vez, GSEC cumpriu seu papel, mostrandos todos usuários conhecidos e terminou o utilitário.

17
GSEC

Atenção
Se as variáveis de ambiente ISC_USER e ISC_PASSWORD foram definidas, e isso não é uma boa
idéia por razões de segurança, GSEC pode rodar sem passar as opções -user ou -password.

Atenção
Assim como todos os utilitário de linha de comando, é melhor usar a versão do GSEC que vier junto
com o seu servidor no pacote de instalação.

Códigos de Saída em Modo Lote


Quando executando GSEC sob Windows, você pode capturar o código de saída em %ERRORLEVEL%
e verificar se houve sucesse ou fracasso do último comando executado.

Quando o sistema operacional for Unix - qualquer quer seja o sabor - o código de saída pode ser acha-
do na variável $?.

Desafortunadamente, GSEC aparente sempre retornar zero e isso torna impossível criar um script que
saiba lidar com erros tanto em Windows como em Unix. Triste, porém verdadeiro.

Erros em Modo Lote Muda para o Modo Interativo


Algumas vezes, quando executando em modo lote, uma condição de erro no GSEC resulta no mesmo
passando ao modo interativo. Isto não é muito se você iniciou o GSEC em modo lote de um script, por
cause que o script vai ficar esperando algo ser digitado.

18
Capítulo 3

GSPLIT – O filtro de
arquivos de backup
divididos do Firebird

Introdução
No passado, muitos systemas operacionais impuseram um limite que define quão grande um arquivo
único pode ficar. Este limite foi 2Gb em alguns sistemas, e 4Gb em outros. For exemplo, nos sistemas
Unix HP-UX 10.20 ou 11.00, o tamanho máximo de arquivo é 2Gb a não ser que o arquivo tenha a
opção de arquivos largos habilitada. Este limite ainda existe em alguns sistemas.

GSPLIT é um utilitário de filtro introduzido no Interbase 5.0 o qual permite que o arquivo de saída do
utilitário GBAK (quando fazendo backup do banco de dados) para dividí-lo em um número de peda-
ços para serem juntados e usados para restaurar um banco de dados. Até o Interbase 5.0, os arquivos
de saída eram limitados a 2Gb pelo próprio utilitário GBAK - mesmo em sistemas que permitiam ar-
quivos chegarem a 4Gb.

Neste capítulo, nos teremos:

• Opções de linha de comandos para o GSPLIT.


• Opções do GSPLIT e seus parâmetros.
• Dividindo backups usando GSPLIT.
• Juntando pedaços de backups usando GSPLIT.

Nota
A partir do Interbase 6.0, GSPLIT não é mais necessário pois GBAK arquivos grande serem dividi-
dos diretamente. Os detalhes para o GSPLIT dados aqui são apenas para referência e você está ad-
vertido a usar o GBAK para dividir grandes arquivos de backup mesmo que o GSPLIT seja suprido
com sua versão do Firebird.

GSPLIT é suprido apenas com a versão Windows do Firebird 1.5, não sendo distribuído com a ver-
são Linux. Linux não requer um utilitário separado para dividir arquivos pois já possui o comando
split assim como usando o GBAK.

Atenção
Em testes com o Firebird 1.5, em Windows XP Home, GSPLIT não parece funcionar e sempre re-
torna erro 9.

Por causa dos problemas em fazer GSPLIT funcionar corretametne, como você pôde ver acima neste
capítulo, você está avisado para usar as capacidades de divisão e junção do utilitário GBAK em vez
de ficar tentanto fazer o GSPLIT funcionar para você.

19
GSPLIT

Opções de linha de comando GSPLIT


GSPLIT possui três opções de linha de comando, embora, estritamente falando, a opção -help não é
realmente válida. Estas são:

• -split_bk_file <parameters>

Especifica que o GSPLIT deve ser usado para dividir a saída do GBAK em um número de arquivos
diferentes como parte do backup do banco de dados. Esta opção pode ser encurtada se requerido,
desde que pelo menso -s seja especificada:

• -join_bk_file <parameters>

Especifica que o GSPLIT será usado para reunir um certo número de arquivos e usar o resultado
como entrada para o GBAK como parte de uma restauração de um banco de dados. Esta opção po-
de ser encurtada se requerido, desde que pelo menos -j seja especificado.

• -help

Usando a opção -help, especificando uma opção ilegal, ou omitindo todas as opções, mostra a se-
guinte informação:
gsplit: invalid option '-help'
gsplit: Command Line Options Are:
gsplit -S[PLIT_BK_FILE] <file> <size>{k|m|g} [... <file> [<size>{k|m|g}]]
or gsplit -J[OINT_BK_FILE] <file> [... <file>]
gsplit: option can be abbreviated to the unparenthesized characters
gsplit: Exiting before completion due to errors

Nota
Tome nota do erro no texto de help acima. O comando de linha de comando para juntar múltiplas
seções de um grande backup não é -JOINT_BK_FILE como mostrado, mas é de fato -
JOIN_BK_FILE.

Nota do Tradutor: Além disso o próprio GSPLIT rejeita a opção -help (com a mensagem inva-
lid option '-help').

Parâmetros dos Comandos do GSPLIT


Todos as duas opções da linha de comandos do GSPLIT requerem parâmetros. Quando dividindo um
backup, os parâmetros são:

• -S[PLIT_BK_FILE] <file> <size>{k|m|g} [... <file> [<size>{k|m|g}]]

O primeiro parâmetro é o primeiro nome de arquivo, seguido pelo tamanho máximo ao qual é per-
mitido ter. Você pode especificar o tamanho em kylobytes, megabytes ou gigabytes. Não deve ha-
ver nenhum espaço entre os dígitos dos parâmetros e a letra da unidade. Deve haver um espaço en-
tre o nome do arquivo e o tamanho.

Os restantes dos parâmetros especificam os outros arquivos. O arquivo final, porém, não deve ter
um tamanho especificado por causa que este será usado armazenar os bytes restantes após os ou-
tros arquivos terem side preenchidos até sua capacidade. Se houvesse um tamanho especificado,

20
GSPLIT

esse será sumariamente ignorado sem exibir mensagens de erro ou aviso.

Se você tiver um arquivso de backup que tiver 4Gb e você pedir apenas dois arquivos, cada com
1Gb em tamanho, GSPLIT irá ignorar o tamanho do arquivo final e o preencherá até que a opera-
ção se complete.

O utilitário previne que arquivos com menos de 1Mb e irá exibir uma mensagem de erro se você
tentar especificar um arquivo menor que isso.

Nota
GSPLIT corretamente especifica um Kilobyte como 1024 bytes, um Megabyte como 1024 Ki-
lobytes e um Gigabyte como 1024 Megabytes.

• -J[OIN_BK_FILE] <file> [... <file>]

Para juntar arquivos e usá-los para restaurar um banco de dados, você simplesmente especifica os
nomes dos arquivos na ordem correta. Se eles não estiverem na ordem correta, GSPLIT irá recla-
mar e o restore será abandonado.

Dividindo Backups
Para executar GSPLIT, use-o como um filtro na linha de comando do GBAK, como o exemplo segu-
inte mostra:
C:\>gbak -b norman.fdb stdout |
gsplit -split norman_1.fbk 1m norman_2.fbk 1m norman_3.fbk

Atenção
O comando acima assume que as variáveis de ambiente ISC_USER e ISC_PASSWORD foram defi-
nidas. Para o caso desta demonstração, isso é aceitável, mas num sistema real, considere as implica-
ções antes de definir essas variáveis.

Além disso, o comando acima foi dividido em duas linhas pra permitir que a geração de pdf deste
manual funcionasse. Na realidade, o comando tem que digitado em uma única linha.

É bastante infeliz que o utilitário não parece funcionar, como a seguinte tela mostra:
C:\>gbak -b norman.fdb stdout |
gsplit -split norman_1.fbk 1m norman_2.fbk 1m norman_3.fbk
fail to read input from ib_stdin, errno = 9
gsplit: progam fails to generate multi-volumn back-up files
Done with volume #0, "stdout"
Press return to reopen that file, or type a new
name followed by return to open a different file.
Name:^C

Se você digitar um nome de arquivo no prompt este será usado como uma completa descarga do ban-
co de dados, então seja cuidadoso para não sobrescrever algo importante. Eu prefiro pressionar
CTRL-C neste ponto para evitar quaisquer problemas.

O utilitário atualmente criou o primeiro arquivo da lista acima, norman_1.fpk, e escrito 100 bytes
de um cabeçalho especial que identifica o mesmo como sendo um arquivo criado pelo GSPLIT.

21
GSPLIT

Atenção
O comando acima assume que as variáveis de ambiente ISC_USER e ISC_PASSWORD foram defi-
nidas. Para o caso desta demonstração, isso é aceitável, mas num sistema real, considere as implica-
ções antes de definir essas variáveis.

Além disso, o comando acima foi dividido em duas linhas pra permitir que a geração de pdf deste
manual funcionasse. Na realidade, o comando tem que digitado em uma única linha.

Nota
Os erros de ortografia em "program" e "volume" foram produzidos pelo utilitário.

Juntando Arquivos de Backup


Supondo que o backup acima tivesse funcionado, o comando para restaura um de um número de ar-
quivos criados pelo GSPLIT seria como segue:
C:\>gsplit -join norman_1.fbk norman_2.fbk norman_3.fbk |
gbak -c stdin create_norman.fdb

Atenção
Além disso, o comando acima foi dividido em duas linhas pra permitir que a geração de pdf deste
manual funcionasse. Na realidade, o comando tem que digitado em uma única linha.

Se você tiver um número arquivos de backup divididos gerados usando o próprio GBAK e não filtra-
do através do GSPLIT, você não pode GSPLIT para juntá-los para uma restauração como o próximo
exemplo mostra:
C:\>gsplit -join norman_1.fbk norman_2.fbk norman_3.fbk |
gbak -c stdin create_norman.fdb
gsplit: expected GSPLIT description record
gsplit: Exiting before completion due to errors
gsplit: progam fails to join multi-volumn back-up files
gbak: ERROR: expected backup description record
gbak: Exiting before completion due to errors

Atenção
Além disso, o comando acima foi dividido em duas linhas pra permitir que a geração de pdf deste
manual funcionasse. Na realidade, o comando tem que digitado em uma única linha.

Aparenta que GSPLIT e GBAK possuem diferentes informações de cabeçalho nos arquivos de backup
e os dois não são compatíveis.

Nota
Os erros de ortografia em "program" e "volume" foram produzidos pelo utilitário.

22
Capítulo 4

Diversos Script para


Firebird em Sistemas
Linux/Unix

Introdução
Após a uma instalação com sucesso do Firebird 1.5, o diretório /opt/firebird/bin conterá uma
certo número de scripts de shell. Este capítulo da detalhes do que server esse scripts e como eles são
usados.

Neste capítulo, nós temos:

• changeDBAPassword.sh
• createAliasDB.sh
• fb_config
• changeRunUser.sh
• restoreRootRunUser.sh
• changeGdsLibraryCompatibleLink.sh

Nota
A lista acima é correta no momento de escrita deste documento e aplica-se ao Firebird 1.5 SuperSer-
ver instalados num sistema Linux. Outros sabores de Unix podem ter diferentes scripts. Eu não te-
nho condições de discutir as mudanças potenciais porque eu não tenho acesso a outros sistemas
Unix.

Mudando a senha do SYSDBA


O script changeDBAPassword.sh permite a mudança da senha do usuário SYSDBA e que vários
scripts de inicialização a ter sua propriedade mudada de acordo. O script é rodado em modo não-
interativo como parte do processo de instalação para criar uma senha inicial aleatoriamente gerada a
qual é armazenada no arquivo /opt/firebird/SYSDBA.password. A senha é subseqüentemen-
te usada no script de inicialização /etc/rc.d/init.d/firebird, a qual possui um symlink
apontando apara /etc/init.d/firebird. O banco de dados de segurança /
opt/firebird/security.fdb também é atualizado com a nova senha.

23
Diversos Script Linux/Unix

Cuidado
O script deve ser rodado como usuário root, e, quando executado, changeDBAPassword.sh irá per-
guntar a você senha corrente do SYSDBA e então a nova senha. Ambas irão aparecer na tela então
para melhorar a segurança, não permita a ninguém olhar sobre o seu ombro quando rodar o script.

Após a execução do script, o arquivo /opt/firebird/SYSDBA.password conterá a senha em


texto puro, então tenha certeza que este arquivo não será legível por ninguém além do root.

A seguir um exemplo de execução do script para mudar a senha do SYSDBA de 'masterkey' para 'bi-
roguin' a qual é uma palavra inventada, a qual deve menos crackeável ou adivinhável.
# cd /opt/firebird/bin
# ./changeDBAPassword.sh
Please enter current password for SYSDBA user : masterkey
Please enter new password for SYSDBA user : biroguin
GSEC> GSEC>
Running ed to modify /etc/init.d/firebird
#

Cuidado
Todas as vezes que você mudar a senha do SYSDBA usando o utilitário GSEC, você deve mudar o
script de inicialização também. Para garantir uma atualização completa, sempre use este script quan-
do mudar a senha do usuário SYSDBA.

Criando nomes de alias de banco de dados


O script createAliasDB.sh permite que a criação de um novo banco de dados, e um alias que um
banco de dados seja criado no arquivo /opt/firebird/aliases.conf.

Nota
O script createAliasDB.sh deve ser executado como usuário root.

Se o seu sistema não for configurado propriamente, o passo da criação um banco de dados pode falhar
mas o alias ainda será adicionado ao arquivo de alias. Isto pode levar a você subseqüentemente ser in-
capaz de adicionar o alias propriamente, porque o script verifica para não sobrescrever um alias exis-
tente. Você terá que manualmente editar o alias para remover o alias inválido.

Para criar novos bancos de dados, eles devem ser propriedade do usuário firebird, e também proprie-
dade do grupo firebird. A segue mostramos um novo diretório sendo criado pelo usuário root para per-
mitir que bancos de dados Firebird serem criados.
# cd /u01
# mkdir databases
# chown firebird:firebird databases
#

Neste ponto o diretório /u01/firebird é disponível para uso como repositório para um ou mais
bancos de dados Firebird. Obviamente, no exemplo acima, o diretório /u01 já existia.

24
Diversos Script Linux/Unix

Parâmetros createAliasDB.sh
Para rodar o script createAliasDP.sh, use uma linha de comando similar à seguinte:

# createAliasDB.sh <new_alias> <database_name>

O script precisa de dois parâmetros na linha de comando, ambos obrigatórios:

• new_alias

O primeiro parâmetro é o novo alias que você deseja criar. O alias não pode existir previamente no
arquivo de alias, ou um erro será mostrado e nenhuma ação posterior será efetuada.

• database_filename

O segundo parâmetro especifica o caminho copleto do arquivo de banco de dados. Você não pode
especificar um caminho relativo pois isso pode levar a nomes de arquivos de banco de dados invá-
lidos em tempo de conexão. O script irá rejeitar qualquer tentativoa de passar um caminho relativo
em vez de um caminho completo.

Um novo banco de dados será criado se o nome passado no script não exista previamente. Se o
banco de dados já existir previamente, apenas o alias será criado e adicionado ao arquivo de alias.

Uma ajuda com arquivos make


O script fb_config é intencionaod para ser usado com um arquivo make para suprir vários ajustes e
opções de compilador as quais são específicas da instalação sendo usada.

Nota
Este script pode ser executado por qualquer usuário que tiver privilégios de execução nele. Você
não precisa ser root para usar este script.

Opções fb_config
Para rodar o script fb_config, use uma linha de comando similar a seguinte:

fb_config <option> [ <option> [...]]

O script precisa de uma ou duas opções na linha de comando:

• --help

Este parâmetro mostra a lista de opções permitidas. Não deve ser usada em adição a outras opções.

• --cflags

Esta opção retorna a lista de diretórios onde estão os arquivos de inclusão do Firebird. É requerida
por compiladores C e C++ para permitir que as diretivas #include sejam corretamente resolvidas.
No meu sistema, esta opção retona '-I/opt/firebird/include' .

25
Diversos Script Linux/Unix

• --libs

Esta opçao retorna a lista de diretórios onde bibliotecas do Firebird estão localizadas e a lista des-
sas bibliotecas que são requeridas para serem linkeditadas pelo linkeditor para uma aplicação clien-
te servidor Firebird. Esta opção retorna '-L/opt/firebird/lib -lfbclient' no meu siste-
ma.

• --embedlibs

Esta opção retorna a lista de diretórios onde estão as bibliotecas do Firebird e uma lista dessas bi-
bliotecas que são requeridas para serem linkeditadas pelo linkeditor para criar uma aplicação em-
barcada Firebird. Esta opção retorna '-L/opt/firebird/lib -lfbembed' no meu sistema.

• --bindir

No meu sistema, essa opção retorna '/opt/firebird/bin' como o caminho completo do diretó-
rio /bin do Firebird.

• --version

Esta opção retorna uma string de versão de 3 partes feita da concatenação versão do build do Fire-
bird, um traço, a versão do pacote, um ponto e a arquitetura do sistema. No meu laptop sistema Li-
nux retorna '1.5.0.4290-0.i686'.

A seguir uma breve treco de um arquivo make o qual mostra como definir duas macros, FBFLAGS e
FBLIBS, e as inicia com os valores corretos usando o fb_config. Note o uso caractere crase (`) em vez
da aspa simples (').
...
FBFLAGS = `fb_config --cflags`
FBLIBS = `fb_config --libs`
...

Mudando o usuário de execução do servidor


Firebird
Existem duas versões do script changeRunUser.sh, a prefixada 'SS' é para instalações Super Ser-
ver e a outra prefixada 'CS' é para instalações Classic Server. A seguinte explanação descreve somente
a versão SuperServer.

Nota
Este script deve ser executado como root.

O script SSchangeRunUser.sh permite que o usuário e grupo, sob o qual o servidor roda, seja alte-
rado. Por padrão, estes são o grupo e usuário firebird, porém, em versões anteriores rodavem como
usuário root que é indesejá sob o ponto de vista de segurança do sistema e permitia que bancos de da-
dos sejam criados em qualquer lugar do sistema de arquivos. Com o novo usuário Firebird, restrições
podem ser colocadas em onde bancos de dados podem ser criados.

O script muda o o grupo e o usuário proprietário de um número de arquivos no diretório de instalação


do Firebird, o arquivo de log e também script de inicialização /etc/rc.d.init.d/firebird o
qual é usado para inicar e parar o servidor Firebird.

26
Diversos Script Linux/Unix

Parâmetros do SSchangeRunUser.sh
Para rodar o script, use uma linha de comando similar à seguinte:

SSchangeRunUser.sh <username> <groupname>

O script precisa de dois parâmetros na linha de comando, ambos os quais são opcionais de modo que
você será perguntado caso ambos sejam omitidos. Se você suprir apenas um parâmetros, é assumido
que seja o nome do usuário e você será perguntado pelo nome do grupo.

• username

Este parâmetro configura o nome do usuário abaixo do qual o SuperServer irá ser executado. O va-
lor suprido é validado contra as entradas em /etc/passwd.

• groupname

Este parâmetro configura o nome do grupo sob o qual SuperServer irá ser executado. O valor su-
prido será validade contra as entradas em /etc/group.

O seguinte exemplo mostra o uso do SSchangeRunUser.sh para mudar o grupo e o usuário propri-
etário do firebird. O usuário e o grupo firebird é atualmente o padrão quando o Firebird é instalado en-
tão não há necessidade de você rodar o scritp a não ser que você tenha já mudado esses detalhes.
# cd /opt/firebird/bin
# ./SSchangeRunUser.sh firebird firebird
Updating /opt/firebird
Updating startup script
Completed
#

Restaurando root como o Usuário de execu-


ção do Servidor Firebird
Existem duas versões do script restoreRootRunUser.sh. O prefixado 'SS' é para instalações Su-
perServer e aquele prefixado 'CS' é para instações Classic Server. A explanação seguinte descreve so-
mente a versão SuperServer.

There are two versions of the restoreRootRunUser.sh script. The one prefixed 'SS' is for Super
Server installations and the one prefixed 'CS' is for Classic Server installations. The following descri-
bes the Super Server version only.

Nota
Este script deve ser executado como root.

Este script simplesmente restaura o antigo formato de instalação onde o Firebird SuperServer roda sob
o grupo e usuário root. Este script é simplesmente um empacotamente do script SSchangeRunU-
ser.sh, passando root como nome de usuário e nome de grupo.

27
Diversos Script Linux/Unix

Rodando aplicações embarcadas ou cliente/


servidor
Este script, changeGdsLibraryCompatibleLink.sh, é disponível somente com instalações
Classic Server, e é usado para mudar o symlink libgds.so para a biblioteca apropriadas para a ins-
talação. Existem duas possíveis bibliotecas que o symlink pode apontar:

• /opt/firebird/lib/libfbclient.so para aplicações cliente/servidor.

• /opt/firebird/lib/libfbembed.so para aplicações embarcadas do servidor.

Após a instalação, o symlink libgds.so aponta para a biblioteca cliente servidor por padrão, então
se você está rodando uma aplicação embarcadda, você deve rodar este script para apontar o
libgds.so para biblioteca embarcada.

Nota
Este script deve executado como root.

O exemplo a seguir mostra como este script pode ser usado para mudar do servidor embarcado para
uso cliente/servidor:
# cd /opt/firebird/bin
# ./changeGdsCompatibleLibraryLink.sh
For classic server there are two optional backward compatible client
libraries. These are libfbclient.so and libfbembed.so.
libfbclient.so) enables your client to be multithreaded but must connect
to a database via a server.
libfbembed.so) allows the client to directly open the database file,
but does not support multithreaded access
Your current setting is:
/usr/lib/libgds.so -> /opt/firebird/lib/libfbembed.so
Which option would you like to choose
(client|embed|remove) [client] client
#

A opção default é client que irá recriar o symlink para a biblioteca cliente/servidor, embed irá re-
criar o symlink para o servidor embarcado, enquanto remove irá remover o symlink.

Não há mensagens mostradas para informar o sucesso do script; porém, se você rodar isso de novo,
você irá perceber que o ajuste corrente deve ser diferente daquela mostrada quando previamente exe-
cutou o script.

28
Capítulo 5

Próximos utilitários
Como isto é um trabalho em progresse, por favor desculpe o "repentino" fim deste livro. Assim que eu
pesquisar e documentar os utilitários de linha de comando restante, eu adicionarei novos capítulos
neste livro. Até o momento que o livro estiver completo, este capítulo dará breves detalhes do que eu
ainda necessito completar.

• FB_LOCK_PRINT é o utilitário que imprime detalhes da página de travamentos internais do ban-


co de dados.

• GBAK é utilitário de backup e restore do banco de dados. Também permite alterar vários parâme-
tros internos do banco de dados.

• GDEF é um utiltário de metadados que foi removido na época do Interbase 4.0 e retornou na ver-
são 6 de código aberto. A funcionalidade do mesmo é provavelmente redundante.

• GFIX permiter tentar consertar bancos de dados corrompidos, inicializar e parar bancos de dados,
resolver transações "no limbo" em múltiplos bancos de dados, mudar o número de buffers de pági-
na e outras coisas mais.

• GPRE é o pré-processador que converte código fonte, o qual pode ser escrito em um certo número
de linguagens, contendo vários "pseudo-códigos" SQL embutidos em chamadas para o engine do
Firebird.

• GSTAT permite ao administrador do Firebird a capacidade de obter estatísticas sobre a saúde geral
e utilização de várias partes do banco de dados.

• ISQL é o utilitário interativo que permite a execução de consultas ad-hoc contra um banco de da-
dos Firebird. É uma ferramenta console (modo texto) - assim como muitos dos utilitários - e é for-
necido com todas as distribuições do Firebird. ISQL é usualmente o melhor lugar para testar seus
scripts e comandos pela primeira vez.

• QLI é Interpretador de Linguagem de Consulta que foi removido a partir do Interbase 4.0 mas re-
tornou no Interbase 6.0 por causa da decisão de abrir o código do Interbase.

Norman Dunbar.

29