Analizzeremo essenzialmente due privilegi di sistema: CREATE SESSION e CONNECT. Connettiamoci al database "ARCHIVIO", mediante l'utente "sampras", senza il bisogno di aprire una nuova sessione di SQL* Plus.
SQL> CONNECT sampras/pete@arch-serv
ERROR:
ORA-01045: user SAMPRAS lacks CREATE SESSION privilege; logon denied
Avvertenza: Connessione a ORACLE interrotta.
Oracle solleva l'errore ORA-01045
quando si cerca di stabilire la connessione ad un database mediante un utente che non ha il privilegio di connessione.
Ogni volta che si crea un nuovo utente, questi non ha il permesso di connessione al database: esiste all'interno del DB e non può fare assolutamente nulla. Il privilegio di sistema CREATE SESSION
concede all'utente specificato la capacità di connettersi al proprio database.
Concediamo all'utente "sampras" il privilegio di connessione al database "ARCHIVIO" ed una quota di 1 megabyte nel tablespace "users":
SQL> GRANT CREATE SESSION TO sampras; SQL> ALTER USER sampras QUOTA 1M ON users;
Se proviamo nuovamente la connessione al database con l'utente "sampras" notiamo che non viene più sollevato l'errore e possiamo accedere.
Proviamo allora a creare una nuova tabella con l'utente "sampras".
SQL> CREATE TABLE prova
2 ( id NUMBER(2)
3 );
CREATE TABLE prova
*
ERRORE alla riga 1:
ORA-01031: privilegi insufficienti
Oracle solleva un nuovo errore perchè il privilegio di sistema CREATE SESSION
consente il login al database ma non la creazione di oggetti, anche se nel proprio schema. Revochiamo il privilegio di sistema CREATE SESSION
e proviamo con CONNECT
.
SQL> CONNECT system/mu56dsa Connesso. SQL> REVOKE CREATE SESSION FROM sampras; Revoca riuscita. SQL> GRANT CONNECT TO sampras; Concessione riuscita.
Ora possiamo riprovare la con l'utente "sampras" e la creazione della tabella: al posto dell'errore Oracle mostrerà il messaggio di conferma "Creata tabella
".
Quindi il privilegio di sistema CONNECT
consente sia la connessione al database sia la possibilità di creare oggetti nel proprio schema.