Você está na página 1de 3

Entendendo as ferramentas iSql e gSec http://www.firebase.com.br/fb/artigo.php?

id=712

Usuários: 46247
Artigos: 171
Dicas: 113
Downloads: 264
17.11.09

Entendendo as ferramentas iSql e gSec


Qual Ferramenta utilizar para acessar o Firebird? Com certeza muitos já fizeram ou já ouviram essa pergunta! Não existe uma
resposta única para ela, sendo asism vamos analisar as opções.

Existem diversas ferramentas para manutenção dos bancos de dados: IBConsole, IBOConsole, IBExpert, Maraton, etc... cada um
deles possui características próprias. Diferente do InterBase, o Firebird não vem como uma ferramenta padrão, o que nos obriga a
eleger uma delas para realizar essa importante tarefa.

De volta a pergunta: então qual usar? Muitos responderiam IBExpert, outros IBConsole ou IBOConsole, mas a maioria das
ferramentas disponíveis tem algum fator de limitação, como por exemplo o custo (licença) ou dependência de Sistema
Operacional. Existe, no entanto, uma solução que acompanha o próprio Firebird. Por ser um utilitário de linha de comando, sua
utilização pode não ser tão amigável quanto a das outras ferramentas que oferecem uma GUI (Graphic User Interface), mas
podemos fazer com ela praticamente qualquer tipo de operação com o banco de dados.

Vamos lá então:

No diretório de instalação do Firebird, existe uma pasta chamada "bin". Essa pasta possui diversos executáveis, alguns bem
conhecidos como "gfix" e "gbak", e outros nem tanto. Um deles, chamado "isql" (Interactive SQL) será a solução do nosso
problema.

O isql tem os seguintes parâmetros:

isql [<database>] [-e] [-t <terminator>] [-i <inputfile>] [-o <outputfile>]


[-x|-a] [-d <target db>] [-u <user>] [-p <password>]
[-page <pagelength>] [-n] [-m] [-q] [-s <sql_dialect>]
[-r <rolename>] [-c <num cache buffers>] [-z] -nowarnings -noautocommit

por enquanto ignorem-os, voltarei a alguns dele mais tarde

Ao executar o isql, vocês verão a seguinte mensagem:

"use CONNECT or CREATE DATABASE to specify a database


SQL>"

a tag "SQL>" indica a espera de comandos.

inicialmente iremos criar uma base de dados chamada teste_isql.gdb.

CREATE DATABASE "c:\teste_isql.gdb" user "SYSDBA" password "masterkey";


commit;

após a criação, vamos nos conectar a ela:

CONNECT c:\teste_isql.gdb user SYSDBA password masterkey;

pronto, já estamos conectados. Agora temos a liberdade de executar comandos SQL de DDL e DML, como se estivessemos no
InteractiveSql do IBConsole.

Vamos digitar alguns comandos:

create table pessoas(codigo integer not null primary key, nome varchar(50));

OBS: Não esqueçam do ";" no final para representar o término do comando.

insert into pessoas values(1, 'Pedro');


insert into pessoas values(2, 'Joao');
insert into pessoas values(3, 'Maria');
insert into pessoas values(4, 'Carlos');

select * from pessoas;

Percebam que fora a rotina de conexão, as operações não são tão diferentes do que uma ferramenta gráfica. Claro que se a tabela
contiver muitos campos, a visualização fica inviável.

Dicas:

Comando SHOW:

1 de 3 17/11/2009 17:37
Entendendo as ferramentas iSql e gSec http://www.firebase.com.br/fb/artigo.php?id=712

Se você pensa que para listar todas as tabelas do banco de dados é necessário digitar um comando DML enorme, envolvendo as
tabelas de sistema e tudo mais, a resposta é não! Digite SHOW TABELES; e pronto! você tem uma lista de todas as tabelas de
seu banco.
Esse comando funciona também para triggers, views, procedures, indices, index, a própria database, version, system, roles,
domains, exceptions, filter, functions, generators e grants;

OBS: Comandos do tipo "show" são rodados sobre transações do tipo READ COMMITED

Comandos SET

Esses comandos servem para alterar caracterísicas do próprio isql. Abaixo segue a descrição de alguns:

SET TERM: muda o terminator (terminação), ou seja, o caractere responsável pelo término do comando. Por exemplo, digite o
seguinte:

set term ^ ; // Mudamos o terminador de ; para ^


select * from clientes^ //funcionou, certo? se tivessemos digitado select * from clientes";" teriamos tido um erro, pois o caractere
";" já não representa mais o "terminator" do banco.
set term;^ // agora voltamos para o terminador original:

SET COUNT [ON | OFF]: indica se os resultados de pesquisas virão seguidos do número de registros envolvidos na mesma (ON)
ou não (OFF);

SET ECHO [ON | OFF}: indica se o comando será (ON) ou não (OFF) mostrado antes da execução;

SET LIST [ON | OFF}: indica o formato de como os dados serão mostrados na saída:

ON: Codigo 1
Nome Pedro

OFF (Padrão)
Codigo Nome
1 Pedro

SET STATS[ON | OFF]: especifica se as estatísticas de performance serão exibidas na execução das consultas

*Verificando o tamanho do cache:


SET STATS ON;
// digite aqui algum comando SQL, como por exemplo um select
COMMIT;

*Executando comando do shell dentro do isql:

shell <comando> permite essa funcionalidade. Exemplo: shell dir; mostra o conteúdo da pasta atual;

*Exportando resultados de queries (essa dica é MUITO útil):

Para que o resultado exibido no prompt do isql seja exportado para algum aqruivo, devemos fazer o seguinte:

output c:\tabelas.txt;
SHOW TABLES; //não ira acontecer nada no prompt
output; //agora temos um arquivo tabelas.txt listando todas as tabelas do banco.

OK, já criamos e acessamos a base, criamos as tabelas, inserimos dados, alteramos as características do próprio isql... mas e as
configurações de segurança? Como faço?

Bom, para isso, precisaremos de um outro executável que encontra-se na mesma pasta do isql, o "gsec". O "gsec" funciona de
maneira um pouco diferente do isql. Não conectaremos a uma base de dados, conectaremos diretamente ao SGDB, claro, afinal as
configurações de segurança são a nível de servidor, e não de banco de dados. Iremos executar no prompt o seguinte comando:

gsec -user SYSDBA -password masterkey


se a conexão for concluída com sucesso, veremos na tela a seguinte tag: "GSEC>"

Primeiramente vamos ver os usuários registrados no banco:


digite display;
se quiser ver somente um usuário, digite display <nomeDoUsuário>;

Vamos agora fazer a mudança da senha do SYSDBA:

modify SYSDBA -pw 123;


com esse comando, acabei de mudar a senha do usuário SYSDBA para 123. Obviamente você irá escolher uma senha mais
complexa ;-). Abaixo, irei adicionar um novo Usuário chamado Sandro Perreira Silva, cujo login será SPS e password 456

add SPS -pw 456 -fname Sandro -mName Perreira -lName Silva;

digitem quit para sair e voltamos ao isql:

2 de 3 17/11/2009 17:37
Entendendo as ferramentas iSql e gSec http://www.firebase.com.br/fb/artigo.php?id=712

Dica: podemos iniciar o isql informando o banco de dados, o user e o password.

isql c:\teste_isql.gdb -user SPS -password 456


REPAREM DE CONECTAR COM O USUÁRIO QUE ACABMOS DE CRIAR

Vamos digitar:

select * from pessoas; O que aconteceu? O esperado por todos:

no permission to read/select acess to TABLE PESSOAS

para darmos essa permissão, temos que logar como SYSDBA. Então:

exit; // saímos como usuários SPS


isql c:\teste_isql.gdb -user SYSDBA -password 123 // logamos como usuário SYSDBA
grant all on PESSOAS to SPS; // damos a permissão para o SPS
exit; // saímos como usuários SYSDBA
isql c:\teste_isql.gdb -user SPS -password 456 // logoamos como usuário SPS
select * from pessoas; // Finalmente temos acesso aos dados

Parâmetros de execução do isql:

Como disse no início desse artigo, agora veremos alguns parâmetros de entrada do isql que considero interessantes:

Extraindo a metadata do banco:


isql -extract -output c:\metadata.txt c:\teste_isql.gdb -user SYSDBA -password -123

pagelength: esse parâmetro é interessante pois permite informar quantos registros serão exibidos na tela, após uma consulta,
antes da reimpressão do cabeçalho. Exemplo:

isql -pagelength 1 significa que para cada registro será impresso um cabeçalho

Versão:
isql -z
imprime a versão do isql e inicia-o;

Dialeto:
isql -s 1
connecta como dialeto 1 (o interessante sobre isso é que se a base for dialeto 3, o isql avisa)

Gravar resultado em arquivo:


isql -o c:\resultado.txt user SYSDBA password 123
resultado não aparecerá na tela, somente no arquivo

O objetivo desse tutorial foi passar algumas dicas das ferramentas isql e gsec, qualquer dúvida entrem em contato que na
medida do possívei irei ajudar a todos.

Diego Menin
icq: 86406546

Avalie esse artigo/dica:

Comentários

[03/05/07] Cleber
Muito bom esse artigo... os caras não dão muita bola para uma ferramenta tão simples quanto util até precisarem de
uma solução que só essa ferramenta tem, ai ficam desesperados para encontrar materiais para desfazerem seus
problemas.

Atenção! Não poste dúvidas nos comentários. Para obter suporte, use a lista de discussão da FireBase.

Copyright (C) Carlos H. Cantu - É proibida a reprodução de qualquer material desse site sem autorização prévia

3 de 3 17/11/2009 17:37

Você também pode gostar