Le quote in Oracle
Se ciascun utente avesse a disposizione uno spazio di memorizzazione illimitato all'interno del database, questo aumenterebbe a dismisura. Questo è uno dei motivi per i quali viene stabilita una quota, ovvero uno spazio con dimensione prestabilita, per ciascun utente o almeno per quelli la cui dimensione degli oggetti posseduti rischia di aumentare in maniera incontrollata.
Le quote possono essere espresse in byte, in kilobyte, in megabyte oppure in maniera illimitata mediante la clausola UNLIMITED
. Per dichiarare una quota tramite i comandi CREATE USER
e ALTER USER
usiamo la clausola QUOTA
. Vediamo qualche esempio.
Creazione di un utente con quota di 24MB nel tablespace "users"
SQL> CREATE USER pierf IDENTIFIED BY nando67 2 DEFAULT TABLESPACE users 3 TEMPORARY TABLESPACE temp 4 QUOTA 24M ON users;
La dimensione della quota è espressa nel formato "numero + suffisso
", dove il suffisso può essere K
per indicare lo spazio in kilobyte ed M
per indicare lo spazio in megabyte. Quando non specifichiamo alcun suffisso allora la quota è intesa in byte.
Nel prossimo esempio assegnamo ad un utente già creato, una quota illimitata all'interno del suo default tablespace. L'utente in questo caso non avrà limitazioni di spazio.
Assegnazione posticipata di una quota per un utente
SQL> CREATE USER noise IDENTIFIED BY home 2 DEFAULT TABLESPACE users 3 TEMPORARY TABLESPACE temp; SQL> ALTER USER noise QUOTA UNLIMITED ON users;
Scadenza delle password utente
L'amministratore di database può decidere di far scadere la validità di una password utente e di costringere lo stesso utente a modificarla al successivo accesso al DB. Per far scadere una password si usa la clausola PASSWORD EXPIRE
nel comando CREATE USER
oppure ALTER USER
.
Creazione di un utente con scadenza della password
SQL> CREATE USER angel IDENTIFIED BY cresch34 2 DEFAULT TABLESPACE users 3 TEMPORARY TABLESPACE temp 4 PASSWORD EXPIRE;
Concedere all'utente il permesso di collegarsi al database
SQL> GRANT CREATE SESSION TO angel;
Ai permessi dedicheremo attenzione più avanti. Colleghiamoci al database "ARCHIVIO" mediante l'utente "angel".
SQL> CONNECT angle/cresch34@ arch-serv ERROR: ORA-28001: the password has expired Cambio password per angel Nuova password: ***** Digitare nuovamente la nuova password: ***** Password cambiata Connesso.
Oracle ha avvisato l'utente angel che la sua password è scaduta, costringendolo a scegliere una nuova password e a confermarla una seconda volta.
Bloccare l'account
Se l'amministratore di database vuole evitare che un utente si colleghi allora può decidere di bloccare il suo account. A tale scopo si usa la clausola ACCOUNT LOCK
nel comando CREATE USER
oppure ALTER USER
. Blocchiamo l'account "angel", creato nell'esempio precedente.
SQL> ALTER USER angel ACCOUNT LOCK;
Se proviamo la connessione con l'utente "angel" questa ci verrà rifiutata.
SQL> CONNECT angel/ cresch34@ arch-serv ERROR: ORA-28000: the account is locked Avvertenza: Connessione a ORACLE interrotta.
Per sbloccare l'utente usiamo la clausola ACCOUNT UNLOCK
.
SQL> ALTER USER angel ACCOUNT UNLOCK;
Ora l'utente "angel" può nuovamente collegarsi al database. Per bloccare e sbloccare un utente è necessario collegarsi al database mediante l'utente amministrativo SYSTEM
.