Sophie

Sophie

distrib > Mandriva > 9.1 > i586 > by-pkgid > f1098342ec4a2b28475e34123ce17201 > files > 916

howto-html-it-9.1-0.5mdk.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
 <TITLE>Database-SQL-RDBMS HOW-TO document for Linux (PostgreSQL Object Relational Database System): Guida per un Avvio Rapido</TITLE>
 <LINK HREF="PostgreSQL-HOWTO-8.html" REL=next>
 <LINK HREF="PostgreSQL-HOWTO-6.html" REL=previous>
 <LINK HREF="PostgreSQL-HOWTO.html#toc7" REL=contents>
</HEAD>
<BODY>
<A HREF="PostgreSQL-HOWTO-8.html">Avanti</A>
<A HREF="PostgreSQL-HOWTO-6.html">Indietro</A>
<A HREF="PostgreSQL-HOWTO.html#toc7">Indice</A>
<HR>
<H2><A NAME="s7">7. Guida per un Avvio Rapido</A></H2>

<P>Rifatevi anche al capitolo 
<A HREF="PostgreSQL-HOWTO-6.html#Installazione-Rapida">Installazione Rapida</A>.
<H2><A NAME="ss7.1">7.1 Creare, Eliminare, Rinominare Database</A>
</H2>

<P>Potete usare l'interfaccia grafica 'pgaccess' per creare ed eliminare i database;
oppure potete usare la utility a riga di comando 'psql'.
<HR>
<PRE>
Se siete connessi come root, passate all'utente 'postgres':
# xhost +  (Per permettere a pgaccess l'accesso al display)
bash$ man createdb
bash$ createdb miodatabase
bash$ man psql
bash$ psql miodatabase
..... in psql, premete i tasti freccia su/gi&ugrave; per utilizzare lo storico dei comandi;
oppure usate il comando \s

bash$ export DISPLAY=&lt;nomehost>:0.0
bash$ man pgaccess
bash$ pgaccess miodatabase
</PRE>
<HR>

Adesso potete cominciare a <B>SPARARE</B> comandi SQL in psql o in pgaccess !!
<P>Per eliminare il database, eseguite:
<HR>
<PRE>
bash$ man dropdb
bash$ man destroydb   (per le versioni precedenti di pgsql)
bash$ dropdb &lt;nomedb>
</PRE>
<HR>

&Egrave; anche possibile eliminare un database dall'interno di una sessione SQL, digitando:
<HR>
<PRE>
> drop database &lt;nomedb>
</PRE>
<HR>

Per rinominare un database vedere 
<A HREF="#backup_restore">Backup e Restore</A><H2><A NAME="ss7.2">7.2 Creare, Eliminare gli utenti</A>
</H2>

<P>Per creare nuovi utenti, fate login come utente unix 'postgres'.
Potete usare l'interfaccia grafica 'pgaccess' per creare, eliminare utenti.
<P>(n.d.t.: d'ora in poi ci riferiremo alla versione in lingua italiana di pgaccess, attivabile con la sequenza Database|Preferences|Preferred language italiano|Save; ma accanto, tra parentesi, indicheremo anche i comandi originali in lingua inglese)
<P>
<HR>
<PRE>
bash$ man pgaccess
bash$ pgaccess &lt;nome_database>
</PRE>
<HR>

fate click sull'etichetta "Utenti" ("Users"), poi fate click su Oggetto|Nuovo (Object|New), oppure Oggetto|Cancella  (Object|Delete)
<P>Potete anche usare script da riga di comando.
Usate lo script di shell chiamato 'createuser', che aziona psql
<HR>
<PRE>
bash$ man createuser
bash$ createuser &lt;nomeutente>
bash$ createuser -h host -p porta -i userid &lt;nomeutente>
</PRE>
<HR>
<P>Per eliminare un utente postgres, usate lo script di shell 'destroyuser':
<HR>
<PRE>
bash$ man dropuser
bash$ man destroyuser  (per precedenti versioni di pgsql)
bash$ destroyuser
</PRE>
<HR>
<H2><A NAME="ss7.3">7.3 Creare, Eliminare Gruppi</A>
</H2>

<P>Non esiste, per ora, un'interfaccia grafica per impostare i gruppi di utenti. Dovete
inserire/aggiornare esplicitamente i gruppi della tabella <B>pg_group</B>. Per esempio:
<HR>
<PRE>
bash$ su - postgres
bash$ psql &lt;nome_database>
..... in psql, premete i tasti freccia su/gi&ugrave; per utilizzare lo storico dei comandi;
oppure usate il comando \s

psql=> insert into pg_group (groname, grosysid, grolist)
psql=> values ('posthackers', '1234', '{5443, 8261}' );
INSERT 58224
psql=> grant insert on foo to group posthackers;
CHANGE
psql=>
</PRE>
<HR>

I campi in <B>pg_group</B> sono:
<P><B>groname</B> - Il nome del gruppo. Questo nome dovrebbe essere puramente alfanumerico; non
aggiungetegli caratteri di sottolineatura o altre punteggiature.
<P><B>grosysid</B> - L'ID del gruppo. Questo &egrave; un int4, e dovrebbe essere unico per ogni gruppo.
<P><B>grolist</B> - La lista degli ID degli utenti che appartengono al gruppo. Questo dato &egrave;
un int4[].
<P>Per eliminare il gruppo:
<HR>
<PRE>
bash$ su - postgres
bash$ psql &lt;nome_database>
..... in psql, premete i tasti freccia su/gi&ugrave; per utilizzare lo storico dei comandi;
oppure usate il comando \s

psql=> delete from pg_group where groname = 'posthackers';
</PRE>
<HR>
<H2><A NAME="ss7.4">7.4 Creare, Modificare, Eliminare una tabella</A>
</H2>

<P>Potete usare l'interfaccia grafica 'pgaccess', oppure il tool da riga di comando 'psql',
per creare, modificare o eliminare una tabella in un database.
<HR>
<PRE>
bash$ man pgaccess
bash$ pgaccess &lt;nome_database>
</PRE>
<HR>

Fate click sui bottoni Tabelle | Nuovo | Disegna   (Table|New|Design).
<HR>
<PRE>
bash$ man psql
bash$ psql &lt;nome_database>
..... in psql, premete i tasti freccia su/gi&ugrave; per utilizzare lo storico dei comandi;
oppure usate il comando \s
</PRE>
<HR>

Al prompt di psql, digitate le istruzioni standard SQL per la gestione delle tabelle, come 'create table', 'alter table',
o 'drop table'.
<H2><A NAME="ss7.5">7.5 Creare, Modificare, Eliminare record in una tabella</A>
</H2>

<P>Potete usare l'interfaccia grafica 'pgaccess', oppure il tool da riga di comando 'psql',
per creare, modificare od eliminare record nella tabella di un database.
<HR>
<PRE>
bash$ man pgaccess
bash$ pgaccess &lt;nome_database>
</PRE>
<HR>

Fate click sui bottoni Tabella | &lt; clicca su una tabella &gt; | Apri   (Table|&lt;clicca su una tabella&gt;|Open).
<HR>
<PRE>
bash$ man psql
bash$ psql &lt;nome_database>
..... in psql, premete i tasti freccia su/gi&ugrave; per utilizzare lo storico dei comandi;
oppure usate il comando \s
</PRE>
<HR>

Al prompt di psql, digitate le istruzioni standard SQL per la gestione delle tabelle, come 'insert into nome_tabella', 'update nome_tabella',
o  'delete from nome_tabella'.
<H2><A NAME="ss7.6">7.6 Cambiare il Database attivo</A>
</H2>

<P>Potete usare l'interfaccia grafica 'pgaccess', oppure il tool da riga di comando 'psql',
per cambiare il database attivo.
<HR>
<PRE>
bash$ man pgaccess
bash$ pgaccess &lt;nome_database>
</PRE>
<HR>

Fate click sui bottoni Database | Apri  (Database|Open) .
<HR>
<PRE>
bash$ man psql
bash$ psql &lt;nome_database>
..... in psql, premete i tasti freccia su/gi&ugrave;, per utilizzare lo storico dei comandi;
oppure usate il comando \s

psql=> connect &lt;nome_database> &lt;utente>
</PRE>
<HR>
<H2><A NAME="backup_restore"></A> <A NAME="ss7.7">7.7 Fare Backup e Restore del database </A>
</H2>

<P>PostgreSQL fornisce due programmi di utilit&agrave; per salvare una copia di sicurezza (backup) del vostro sistema: <B>pg_dump</B>
per fare backup di database individuali, e <B>pg_dumpall</B> per fare backup di tutto il
database in un colpo solo.
<HR>
<PRE>
bash$ su - postgres
bash$ man pd_dump
bash$ pd_dump &lt;nome_database> > nome_database.pgdump

Per scaricare il dump di tutti i database:
bash$ man pg_dumpall
bash$ pg_dumpall -o > db_all.out

Per ricaricare (ripristinare) un database scaricato con pg_dump:
bash$ cat nome_database.pgdump | psql &lt;nome_database>

Per ricaricare (ripristinare) tutti i database scaricati con pg_dump:
bash$ psql -e template1 &lt; db_all.out
</PRE>
<HR>

Questa tecnica pu&ograve; essere usata per spostare i database in nuove collocazioni, e per rinominare
i database esistenti.
<P><B>ATTENZIONE:</B> Di ogni database si dovrebbe fare backup in maniera regolare.
PostgreSQL gestisce autonomamente i suoi file, all'interno del file system. Per questo motivo, per fare i backup dei vostri database,
non &egrave; consigliabile affidarsi ai soli sistemi di backup del file system; non c'&egrave;
garanzia che i file saranno utilizzabili e in uno stato coerente,
dopo il ripristino.
<P><B>BACKUP DI DATABASE ESTESI:</B> Poich&eacute; PostgreSQL ammette tabelle pi&ugrave; grandi della
dimensione massima dei file sul vostro file system, pu&ograve; essere problematico scaricare la tabella
in un file, perch&eacute; il file risultante sar&agrave; probabilmente pi&ugrave; grande della dimensione massima
ammissibile sul vostro sistema. Nel momento in cui <B>pg_dump</B> scrive su <B>stdout</B>,
potete usare solo gli strumenti standard di unix per aggirare questo possibile problema:
scaricate il database utilizzando la compressione:
<HR>
<PRE>
bash$ pg_dump &lt;nome_database> | gzip > nomefile.dump.gz
Ricaricate con:
bash$ createdb &lt;nome_database>
bash$ gunzip -c nomefile.dump.gz | psql &lt;nome_database>
Oppure
bash$ cat nomefile.dump.gz | gunzip | psql &lt;nome_database>
Uso di split:
bash$ pg_dump &lt;nome_database> | split -b 1m - nomefile.dump.
Nota: C'&egrave; un punto (.) dopo nomefile.dump, nel comando sopra riportato!!
Potete ricaricare con:
bash$ man createdb
bash$ createdb &lt;nome_database>
bash$ cat nomefile.dump.* | pgsql &lt;nome_database>
</PRE>
<HR>

Naturalmente il nome del file (nomefile), ed il contenuto dell'output di <B>pg_dump</B>,
non devono necessariamente coincidere con il nome del database. Inoltre il database ripristinato
pu&ograve; avere un nuovo nome arbitrariamente scelto, e perci&ograve; questo meccanismo &egrave; anche adatto per
rinominare i database.
<P><B>Backup di Oggetti ESTESI:</B>
Gli oggetti estesi non vengono gestiti da pg_dump. La directory <I>contrib/pg_dumplo</I>,
dell'albero dei sorgenti di Postgres, contiene un programma che pu&ograve; farlo.
<P><B>BACKUP DEL FILESYSTEM:</B>
Potete usare gli strumenti e i comandi del Sistema Operativo Linux per effettuare il backup dell'intero database.
Ma prima di usare questo metodo, per fare il backup o il ripristino, <B>dovete bloccare del tutto</B>
il server database postgresql.
Il backup o il ripristino del filesystem pu&ograve; essere <B>da 2 a 3 volte pi&ugrave; rapido</B>
dell'esecuzione del comando pg_dump, con il solo svantaggio che <B>si deve bloccare del tutto</B>
il server database.
&Egrave; molto raccomandabile l'uso di strumenti di backup e ripristino
come Arkeia, Bru. Questi strumenti vengono
forniti nella sotto-intestazione "Backup and Restore Utility" della lista di analogie Mic-Lin presso
<A HREF="http://aldev.8m.com">http://aldev.8m.com</A>,
e i cui siti mirror sono:
<A HREF="http://aldev.webjump.com">webjump</A>,
<A HREF="http://www.angelfire.com/nv/aldev">angelfire</A>,
<A HREF="http://www.geocities.com/alavoor/index.html">geocities</A>,
<A HREF="http://aldev.virtualave.net">virtualnet</A>,
<A HREF="http://aldev.bizland.com">bizland</A>,
<A HREF="http://members.theglobe.com/aldev/index.html">theglobe</A>,
<A HREF="http://members.spree.com/technology/aldev">spree</A>,
<A HREF="http://homepages.infoseek.com/~aldev1/index.html">infoseek</A>,
<A HREF="http://www3.bcity.com/aldev">bcity</A>,
<A HREF="http://aldev.50megs.com">50megs</A>
I comandi del SO da impiegare sono:
<HR>
<PRE>
bash$ man tar
bash$ tar -cvf backup.tar /usr/local/pgsql/data
oppure, impiegando la compressione
bash$ tar -zcvf backup.tgz /usr/local/pgsql/data
</PRE>
<HR>
<P><B>BACKUP INCREMENTALE:</B> Questa funzionalit&agrave; &egrave; elencata nella lista dei todo, e apparir&agrave; nei
futuri rilasci di PostgreSQL.
<H2><A NAME="ss7.8">7.8 Protezione del database</A>
</H2>

<P>Vedere il capitolo in 
<A HREF="PostgreSQL-HOWTO-11.html#protezione">Protezione di PostgreSQL</A>.
<H2><A NAME="ss7.9">7.9 Help in linea</A>
</H2>

<P>&Egrave; molto importante che impariate ad usare l'help in linea di PostgreSQL,
poich&eacute; vi risparmier&agrave; molto tempo e vi consentir&agrave; un rapidissimo accesso alle informazioni.
<P>Leggete le pagine di manuale in linea sui vari comandi come createdb, createuser, ecc..
<HR>
<PRE>
bash$ man createdb
</PRE>
<HR>
<P>Leggete anche l'help in linea di psql, digitando \h al prompt di psql
<HR>
<PRE>
bash$ psql miodatabase
psql> \h

Suggerimento: In psql, premete i tasti freccia su/gi&ugrave; per utilizzare lo storico dei comandi;
oppure usate il comando \s
</PRE>
<HR>
<H2><A NAME="ss7.10">7.10 Creare Trigger e Stored Procedure</A>
</H2>

<P>Per creare trigger o stored procedure,
si deve prima installare 'plpgsql'
nel database particolare che state usando, eseguendo lo script 'createlang'. Se volete che il vostro database sia quello
predefinito, installate 'plpgsql' nel 'template1', cos&igrave;
i database creati saranno cloni del template1.
Leggete la pagina web di 'createlang', e precisamente la guida dell'Utente presso /usr/doc/postgresql-7.0.2/user/index.html.
<P>
<HR>
<PRE>
bash$ man createlang
bash$ createdb miodb
bash$ export PGLIB=/usr/lib/pgsql
bash$ createlang plpgsql miodb
bash$ createlang plpgsql template1
</PRE>
<HR>

Leggete anche gli esempi di trigger e di stored procedure che trovate in
<A HREF="PostgreSQL-HOWTO-6.html#RPM degli Esempi">RPM degli Esempi</A>
. Ecco un frammento di codice tratto dall'RPM degli esempi:
<HR>
<PRE>
create function tg_pfield_au() returns opaque as '
begin
    if new.name != old.name then
        update PSlot set pfname = new.name where pfname = old.name;
    end if;
    return new;
end;
' language 'plpgsql';

create trigger tg_pfield_au after update
    on PField for each row execute procedure tg_pfield_au();
</PRE>
<HR>

Un altro esempio di trigger:
<HR>
<PRE>
create trigger check_fkeys_pkey_exist
        before insert or update on fkeys
        for each row
        execute procedure
        check_primary_key ('fkey1', 'fkey2', 'pkeys', 'pkey1', 'pkey2');
</PRE>
<HR>
<P>Potete installare anche il pacchetto di TEST: postgresql-test-7.0.2-2.rpm,
e potete leggere gli esempi di script sql posti in  /usr/lib/pgsql/test/regress/sql
<P>Per vedere la lista di trigger nel database, digitate:
<HR>
<PRE>
bash$ psql miodb
psql=> \?
psql=> \dS
psql=> \d pg_trigger
psql=> select tgname from pg_trigger order by tgname;
</PRE>
<HR>
<P>Per leggere la lista di funzioni e stored procedure nel database, digitate:
<HR>
<PRE>
bash$ psql miodb
psql=> \?
psql=> \dS
psql=> \d pg_proc
psql=> select proname, prosrc from pg_proc order by proname;
psql=> \df
</PRE>
<HR>
<H2><A NAME="ss7.11">7.11 Documentazione di PostgreSQL</A>
</H2>

<P>Per altre domande, leggete gli eccellenti manuali di PostgreSQL, molto
approfonditi.
La documentazione di PostgreSQL &egrave; distribuita insieme al pacchetto. Leggete le
guide 'User's Guide', 'Programmer's Guide', 'Administrator's Guide', e gli
altri manuali. I documenti dei rilasci sono reperibili
presso 
<A HREF="http://www.postgresql.org/users-lounge/docs">http://www.postgresql.org/users-lounge/docs</A>.
<HR>
<A HREF="PostgreSQL-HOWTO-8.html">Avanti</A>
<A HREF="PostgreSQL-HOWTO-6.html">Indietro</A>
<A HREF="PostgreSQL-HOWTO.html#toc7">Indice</A>
</BODY>
</HTML>