Introduzione ad Oracle9i Lite



Introduzione

Per le esercitazioni in laboratorio e la parte realizzativa del progettino da realizzare durante il corso, si fa uso di DBMS commerciale, in particolare si fa uso di Oracle9i Lite, una versione semplificata di Oracle9i che gira sotto WindowsNT/2000/XP. Per maggiori informazioni su questo sistema si faccia riferimento alla Oracle9i Lite Documentation.

 


Installazione del DBMS Oracle9i Lite

Per installare Oracle 9i Lite è necessario installare precedentemente Java 2 Standard Development Kit (J2SDK), (disponibile in diverse versioni sul sito java.sun.com ). Per eseguire Oracle9i è raccomandata la versione 1.3.1 (o successiva). Noi consigliamo di scaricare ed installare la versione 1.4.1 (circa 36 MB), in quanto l'installazione della versione 1.4.2 (ultima release) avviene on-line e richiede in genere un tempo di connessione più lungo.

Una volta eseguita l'installazione del J2SDK, settate opportunamente la variabile di ambiente PATH.

Per installare Oracle9i procedete come segue:

  1. Scaricate il file olite502_win.zip alla pagina web http://otn.oracle.com/software/index.html. Il file è piuttosto grande (circa 350 MB), quindi questa operazione richiede molto tempo;
  2. Scompattate il file in una cartella di appoggio, ad esempio c:\oracle-install;
  3. Lanciate il programma setup.exe;
  4. Selezionate per due volte la voce Avanti, lasciando le impostazioni di default. Alla terza schermata selezionate la seconda voce Mobile Development Kit e selezionate ancora Avanti;
  5. A questo punto, l'installazione procede automaticamente.

Accesso al DBMS via MSQL

Lo strumento base per accedere al DBMS di Oracle9i Lite è l' interprete di comandi SQL, MSQL (Mobile SQL). Per utilizzare questo programma, bisogna operare dal prompt di comandi MS-DOS attraverso i seguenti parametri in linea

msql <user'sname>/<password>@<host string>

dove

Una volta connessi alla base di dati, dopo una serie di massaggi, appare il prompt di MSQL:

     SQL >
A questo punto si possono digitare comandi SQL che andranno ad operare sulla base di dati a cui si è connessi.

Creare una base di dati

Per creare una nuova base di dati, operate dal prompt dei comandi. Se, ad esempio, volete creare una base di dati chiamata newdb:

Nota: Se riscontrate problemi nell'accesso alla nuova base di dati, in particolare se viene restituito l'errore database inesistente,
 fate riferimento a questa breve guida per la creazione di una base di dati 


Creare ed eliminare utenti

In risposta al prompt SQL> possiamo scrivere qualsiasi comando SQL. Iniziamo creando un nuovo utente, il comando SQL ha la seguente forma:
     create user <nome-utente> identified by <password> ;

dove <nome-utente> è il nome del nuovo utente e <password> è la password assegnatagli (l'utente una volta connessosi alla base di dati potrà cambiare la password attraverso il comando alter user <nome-utente> identified by <nuova-password> ;). Si noti che in MSQL tutti i comandi SQL devono terminare con il punto e virgola.

Si tenga presente che SQL è "case-insensitive". Quindi in MSQL, si possono usare indifferentemente maiuscole o minuscole (questo vale anche per la password). Si noti però che i dati di tipo stringa fanno distinzione tra maiuscole e minuscole.

Per eliminare un utente si usa il comando:
     drop user <nome-utente> ;
che elimina l'utente e tutti gli oggetti della base di dati ad esso associati.


Privilegi e ruoli di un utente

Una volta creato l'utente si devono associare ad esso gli opportuni permessi attraverso il comando SQL grant. Si ricorda che il comando grant permette di dare diritti di inserimento, cancellazione, aggiornamento, e interrogazione di una tavola a determinati utenti. Inoltre grant può essere usato per associare ruoli prestabiliti, in particolare in Oracle9i Lite permette di associare due ruoli:

Ad esempio:
     grant ddl to <nome-utente> ;
dà tutti i diritti all'utente <nome-utente>.

Per rievocare privilegi ad un utente si usa il comando SQL revoke. Questo si utilizza pure per revocare ruoli. Ad esempio:

     revoke ddl from <nome-utente> ;
revoca il ruolo ddl a <nome-utente>.


Uscire da MSQL

Per uscire da MSQL, si deve digitare:

     quit
oppure
     exit
in risposta al prompt.


Creare tavole

In MSQL possiamo eseguire qualsiasi comando SQL. Per creare una tavola si usa il comando SQL standard create table avente la forma seguente:

     create table <nome-tavola> ( 
         <lista di attributi e tipi ad essi associati>
     );

Nello scrivere un comando si può andare a capo. Se il comando occupa più linee, ad ogni return viene dato un prompt speciale con il numero di linea corrente fino a che non si digita il punto e virgola o un return lasciando una riga vuota. Nel primo caso viene eseguito il comando; nel secondo caso il comando viene memorizzato su un buffer (si veda Buffer di editing).

Un esempio di creazione è il seguente:

     create table Test (
         i int,
         s char(10)
     );

Questo comando crea una tavola chiamata TEST con due attributi: il primo, chiamato i, è un intero; il secondo, chiamato s, è una stringa lunga al più 10 caratteri.


Inserire tuple

Dopo aver creato una tavola possiamo inserirvi tuple utilizzando il comando insert. La maniera più semplice è inserire direttamente i valori:

     insert into <nome-tavola>
         values( <lista ordinata dei valori da inserrire negli attributi);

Per esempio, possiamo inserire la tupla (10, 'foobar') nella tavola Test come segue:

     insert into Test values(10,'foobar');
Analogamente, per cancellare ed aggiornare tuple si utilizzano i comandi delete e update.


Interrogare tavole

Possiamo vedere quali sono i valori memorizzati in una tavola attraverso una semplice query:

     select * 
     from <nome-tavola> ;

Per esempio, dopo aver creato la tavola test ed aver inserito la tupla (10,'foobar') il comando:

    select * from Test;

restituisce il seguente risultato

             I S 
    ---------- ----------
            10 foobar


Eliminare tavole

Per eliminare una tavola dalla base di dati, si esegue:

     drop table <nome-tavola> ;

In generale dopo aver creato tavole di prova si suggerisce di eliminarle con drop table per mantere pulita la base di dati. Ad esempio eseguire:

     drop table Test;

alla fine della sessione di prova.


Commit e rollback

Le modifiche che si effettuano sulla base di dati non sono permanenti fino a che non si dà il comando:

    commit;
a fronte di tale comando la base di dati viene permanentemente modificata.

Prima che sia dato il commit è possibile eliminare tutte le modifiche fino al commit precedente con il comando:

    rollback;

Si noti che i comandi di aggiornamento tra due commit formano una transazione, cioè un'azione sulla base di dati da considerarsi come una unità.

è possibile far generare i comandi di commit in modo automatico da MSQL dopo ogni istruzione DDL di SQL, digitando:

    set autocommit on
L'autocommit si disattiva digitando:
    set autocommit off
Infine digitando:
    show autocommit
si verifica lo stato attuale dell'autocommit.


Utilizzare il catalogo

Il DBMS mantiene tutte le informazioni sulla base di dati (metadati) in delle tavole di sistema che formano il cosiddetto catalogo. Le tavole del catalogo sono interrogabili attraverso SQL esattamente come le tavole create dagli utenti. L'elenco completo delle tavole lo si trova in Oracle9i Lite User's Guide. Qui ci occupiamo solo della tavola ALL_TABLES che contiene le infomazioni su tutte le tavole della base di dati. In particolare se non ci si ricorda quali sono le tavole dell'utente <nome-utente> si può utilizzare la seguente query:

     select TABLE_NAME
     from ALL_TABLES
     where OWNER = '<nome-utente>'

Dato il nome della tavola è possibile ottenere i suoi attributi (nome e tipo) con il comando:

     describe <nome-tavola>

Per esempio, per sapere gli attributi memorizzati dal sistema in ALL_TABLES si può usare:

     describe ALL_TABLES


Eseguire comandi memorizzati su file

Anzichè eseguire comandi SQL digitandoli su terminale è spesso più conveniente scriverli in un file di testo e poi richiamarli da MSQL.

Supponiamo di aver scritto alcuni comandi SQL in un file foo.sql nella directory corrente. Possiamo eseguire il file da MSQL con il comando:

     @foo.sql
oppure:
     start foo.sql

Se non viene specificata nessuna estensione per il file, cioè se scriviamo @foo, allora MSQL assume che l'estensione sia sql. è ovviamente possibile anche specificare il path completo del file. Ad esempio possiamo scrivere @d:\degiacomo\foo.sql.

Nota: per realizzare una base di dati è utile preparare i seguenti file:


Buffer di editing

Se si termina un comando con una riga vuota, invece del punto e virgola, il comando viene memorizzato in un buffer. Questo comando può essere eseguito dal buffer  digitando un singolo slash (/).

Il comando nel buffer può essere editato prima di eseguirlo. Per fare ciò si può utilizzare un editor di linea interno a MSQL, oppure un editor esterno. I comandi principali dell'editor di linea sono i seguenti:

L

mostra il contenuto del buffer e pone l'ultima linea del buffer come "linea corrente"

L n

mostra la linea n-esima del buffer, and la rende la linea corrente

L m n

mostra le linee da m a n e rende la linea n la linea corrente

I

permette di inserire nuove linee dopo la linea corrente;
per terminare l'inserimento bisogna digitare return due volte

C /vecchio/nuovo

sostituisce il testo "vecchio" con "nuovo" nella linea corrente

A testo

aggiunge "testo" alla fine della linea corrente

DEL

cancella la linea corrente


Registrare una sessione di lavoro

Per avere una copia su file di una sessione di lavoro su può usare il comando spool di MSQL. In particolare digitando:

    spool <nome-file>

viene creato un file con estensione di default .lst nella directory corrente e in esso viene copiato tutto ciò che appare su terminale fino a che non si esce da MSQL o non si digita

    spool off


Caratteri speciali

I caratteri speciali non possono essere utilizzati se non in stringhe. In queste, per ottenere l'apostrofo (poichè una stringa è delimitata da singoli apici) si usano due apostrofi. Ad esempio:

    'città' del solè

Per altri caratteri, ad esempio & si usano sequenze di escape. Per definire il carattere di escape si usa il comando:

     set escape <char>
Ad esempio, con il comando:
     set escape ^
possiamo scrivere 'Johnson ^& son'. Per farsi mostrare il carattere di escape attuale si usa il comando:
     show escape
Per eliminare il carattere di escape definito si usa il comando:
     set escape off

Questo documento è stato scritto da Domenico Lembo per il Corso di Basi di Dati, Laurea in Ingegneria Informatica, Università di Roma "La Sapienza", anno accademico 2003/2004. Nello scrivere lo stesso si è fatto riferimento a documenti analoghi scritti da Giuseppe De Giacomo, Università di Roma "La Sapienza", Shuguang Hong, Georgia State University, USA, Tim Finin, University of Maryland, USA, e Jeff Ullman, Stanford University, USA.