Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Usare Firebird da linea di comando

Vediamo come eseguire le principali operazioni su un Database Firebird: gestione utenti, database e strumenti di amministrazione
Vediamo come eseguire le principali operazioni su un Database Firebird: gestione utenti, database e strumenti di amministrazione
Link copiato negli appunti

Firebird, il database open source che abbiamo presentato qualche giorno fa, mette a disposizione dell'utilizzatore numerosi strumenti da linea di comando per le comuni operazioni di gestione e di manutenzione dell'RDBMS e delle basi di dati create attraverso di esso. Nel corso di questa trattazione, descriveremo in particolare alcuni tools: Gsec, per la gestione di utenti e password; Isql per l'interazione con le basi di dati; Gbak per il backup e il restore dei database e Gfix per le operazioni di manutenzione.

Gestione di utenti e password con Gsec in Firebird

Una volta installato Firebird, il suo utilizzo da prompt di Ms Dos in Windows o da Shell da Unix o Linux è praticamente identico e si basa sugli stessi comandi.

Di default, il programma presenta un utente amministratore (master admin user) chiamato sysdba che ha come password predefinita masterkey. Una delle nostre prime operazioni, ovviamente per motivi di sicurezza, dovrà essere quella di cambiare la parola chiave assegnata all'admin.

Se su Windows abbiamo installato Firebird nella directory C:ProgrammmiFirebird, potremo aprire il prompt di Ms-Dos e recarci con il comando cd nella cartella bin del programma e richiamare l'applicazione gsec.exe contenuta in essa. Gsec è un tool da linea di comando destinato alla gestione degli utenti e delle relative chiavi di accesso.

Per modificare la password dell'utente admin sysdba utilizzeremo i seguenti comandi:

"C:ProgrammFirebirdbingsec.exe" -user sysdba -password masterkey
GSEC> modify sysdba -pw html
GSEC> quit

È bene sapere che Gsec non accetta parole-chiave più lunghe di 8 caratteri senza spazi, quindi se indicheremo nella riga di comando una password più lunga verranno presi in considerazione solo i primi 8 elementi digitati. Curiosamente la password di default, 'masterkey', conta 9 caratteri, quindi una volta modificata non potrà essere reinserita.

A questo punto, sempre per questioni inerenti la sicurezza, sarà opportuno creare degli utenti diversi dall'admin con i quali lavorare sulla basi di dati.

Anche in questo caso, ricorreremo al tool predefinito Gsec; vediamo con quali comandi:

"C:ProgrammFirebirdbingsec.exe" -user sysdba -password html
GSEC> ADD claudio -pw carla -fname aaa -mname bbb -lname ccc
GSEC> quit

Il comando ADD deve essere seguito dal nome dell'utente che si desidera aggiungere, nel nostro caso claudio, mentre al parametro pw dovremo associare come argomento la password da assegnare; f/m/lname non sono invece parametri obbligatori e si riferiscono al primo, al mediano e all'ultimo nome dell'utente creato.

Una volta generati gli utenti desiderati, potremo visualizzarli tutti in un elenco tramite il semplice comando:

GSEC> display

Il capofila sarà naturalmente sysdba che comparirà con il nome completo di sql database administrator. Gli altri utenti potranno essere proprietari di database ma soltanto l'amministratore potrà accedere a Gsec.

Gli utenti non più necessari potranno essere cancellati facilmente dall'admin tramite il comando delete utilizzato nel modo seguente:

GSEC> -user sysdba -password html -delete nome_utente

o semplicemente delete nome_utente se si è già loggati come sysdba.

Gestione delle basi di dati in Firebird con Isql

Una volta definiti gli utenti, questi potranno lavorare creando i loro database e manipolandoli tramite Isql (Interactive SQL), il tool da linea di comando che Firebird mette a disposizione per l'invio di istruzioni SQL.

Per richiamare l'eseguibile di Isql, se lavoriamo in Windows, sarà necessario anche in questo caso recarsi nella cartella bin di Firebird (/opt in Linux):

"C:ProgrammFirebirdbinisql.exe" 
Use CONNECT or CREATE DATABASE to specify a database
SQL> 

Il processo di creazione di una base di dati è molto semplice in quanto sfrutta il noto comando CREATE DATABASE seguito dal nome del database da creare e dai dati di autenticazione dell'utente che ne sarà il proprietario:

SQL> CREATE DATABASE '../data/db.fdb' USER 'claudio' PASSWORD 'carla';

Nel nostro caso abbiamo creato un database chiamato db.fdb di proprietà dell'utente claudio e lo abbiamo salvato all'interno di una cartella data pensata preventivamente per questo scopo; da notare come il percorso del file .fdb non sia imposto dall'RDBMS ma lasciato alla libera scelta dell'utilizzatore che potrà salvarli dove ritiene più opportuno.

A questo punto l'utente potrà operare sul database creato con i comuni comandi SQL per la generazione delle tabelle, la creazione dei campi, l'inserimento dei record e le query di selezione etc.:

SQL> CREATE TABLE tb (prova VARCHAR(2) NOT NULL PRIMARY KEY);
SQL> INSERT INTO tb (prova) VALUES ('ok');
SQL> INSERT INTO tb (prova) VALUES ('go');
SQL> SELECT prova FROM tb;

PROVA
======
ok
go

SQL> COMMIT;
SQL> EXIT;
CON>

È molto importante ricordare che alla fine di una sessione SQL bisogna utilizzare EXIT e non QUIT, con EXIT abbiamo il COMMIT della sessione di lavoro (la sua esecuzione), con QUIT invece questa viene abortita.

Per ricominciare ad operare su un database esistente sarà sufficiente utilizzare il comando CONNECT seguito dai dati di accesso dell'utente proprietario:

CON > CONNECT '../data/db.fdb' USER 'claudio' PASSWORD 'carla';
SQL> SHOW TABLES;
           TB
SQL>

Gbak: backup e restore dei database in Firebird

Gbak è uno strumento da linea di comando che Firebird mette a disposizione per creare copie di sicurezza e gestire il ripristino dei database salvati.

Questo comando è in grado di operare backup senza la necessità di arrestare il DBMS e senza interrompere il lavoro degli utenti. La procedura di salvataggio prevede infatti la creazione di un'immagine dello stato delle basi di dati al momento del suo avvio. Ovviamente, nel caso in cui si vada ad operare su grosse quantità di dati, è prevedibile un certo abbassamento nel livello delle prestazioni, quindi sarà meglio non utilizzare Gbak nelle ore di 'punta' in cui vengono effettuate la maggior parte delle transazioni.

L'utente amministratore sysdba potrà operare su tutti i database creati, mentre i singoli utenti potranno manipolare soltanto gli archivi di loro proprietà.

Quindi, proseguendo con il nostro esempio, l'utente claudio potrà creare una copia di sicurezza del suo database chiamato 'db.fdb' con un comando Gbak simile al seguente:

gbak.exe -v -t -user claudio -password carla ../data/db.fdb ..bkpdb.fbk

Analizziamo brevemente l'istruzione presentata: abbiamo innanzitutto la chiamata all'esecutore di Gbak; seguono 2 argomenti, v[erbose], con cui riceviamo in output un rapporto dettagliato sui diversi passaggi dell'azione di backup, mentre t[ransportable] indica all'esecutore che l'output prodotto dovrà essere 'trasportabile' tra diverse piattaforme e versioni dell'RDBMS; abbiamo poi i dati di autenticazione relativi all'utente proprietario della base di dati; infine, l'istruzione contiene il percorso al database da salvare e quello della copia di sicurezza da creare.

Vista la procedura di backup, passiamo ora a quella di restore:

gbak.exe -c -v -user claudio -password carla ..bkpdb.fbk ../data/db2.fdb 

L'istruzione di restore non è molto diversa da quella di backup, in questo caso abbiamo però un nuovo parametro: c[reate_database], e naturalmente l'inversione dei percorsi di origine e di destinazione.

L'argomento c[reate_database] impone che la base di dati passata in istruzione non sia già esistente, per questo abbiamo chiamato db2 il file da ripristinare; nel caso in cui si desideri eseguire il restore di un database già esistente dovremo invece utilizzare i parametri -r[ecreate_database] o[verwrite] che si occuperanno di sovrascriverlo.

Amministrazione di Firebird con Gfix

Gfix è un tool da linea di comando che permette di eseguire operazioni di amministrazione dell'RDBMS come per esempio lo shutdown di un database o la riparazione delle basi di dati.

Per terminare l'esecuzione di un database abbiamo a disposizione numerosi parametri che potremo utilizzare a seconda delle diverse esigenze. Sarà per esempio possibile inviare un'azione di arresto repentino (shutdown now) formulando il nostro comando nel modo seguente:

gfix.exe -user claudio -password carla ../data/db.fdb -shut -force 0

shut è naturalmente il parametro che indica la richiesta di arresto, -force è invece un argomento a cui vanno indicati il numero di secondi previsti prima dell'azione di shutdown; nel caso della nostra istruzione a -force è stato passato 0 (immediatamente).

Sarà quindi possibile imporre all'esecutore di Gfix di attendere, ad esempio, 30 secondi prima della cancellazione di tutte le connessioni e le transazioni in atto semplicemente passando questo numero come valore a -force.

I database arrestati possono tornare in attività grazie all'utilizzo di un semplice parametro:

gfix.exe -user claudio -password carla ../data/db.fdb -online

Il parametro online permette di eliminare uno shutdown se è in atto, diversamente, sé esso è stato già eseguito consente di riavviare il database arrestato.

Gfix rende anche le operazioni di manutenzione molto semplici, se per esempio prendiamo il caso della validazione di un database, noteremo come questa verrà eseguita tramite l'indicazione di un semplice parametro:

gfix.exe -user claudio -password carla ../data/db.fdb -v -f

-f[ull] esegue una scansione completa del database indicato in istruzione, opera infatti un check all'interno di tutti i relativi file alla ricerca di frammenti di record non assegnati.

Conclusioni

Nel corso di questa breve trattazione abbiamo descritto i principali strumenti per la gestione di Firebird e delle basi di dati da linea di comando. Con le indicazioni fornite, anche l'utente alle prime armi sarà in grado di amministrare l'RDBMS affrontando le operazioni più frequenti.

Ti consigliamo anche