IT Blok

kutilovo živobytí

Oracle 10g – správa uživatelských účtů, schémat a oprávnění III

V dalším díle tohoto seriálu si řekneme, jaká oprávnění uživatel potřebuje k připojení k serveru, jak udělit a odebrat oprávnění, jak zamknout nebo odemknout účet, jaká práva jsou potřeba pro vytváření tabulek a jak uživateli přiřadit tablespace v databázích Oracle 10g.

Potřebná oprávnění uživatele pro připojení k Oracle serveru

Oracle zakazuje připojení uživatelům, kteří nemají oprávnění CREATE SESSION. Viz následující ukázka:

C:>sqlplus /nolog
SQL> connect SYSTEM/password
Connected.
SQL> create user DEV identified by developer account unlock;
User created.
SQL> disconnect
SQL> connect DEV/developer
ORA-01045: user DEV lacks CREATE SESSION privilege;
  logon denied

Tato chybová hláška je dostatečně výmluvná, že?

Udělení oprávnění CREATE SESSION

Pokud chceme uživateli přiřadit oprávnění CREATE SESSION, musíme použít příkaz GRANT. V následujícím příkladu můžeme vidět, jak přiřadit toto oprávnění našemu uživateli DEV:

C:>sqlplus /nolog
SQL> connect SYSTEM/password
Connected.

SQL> grant create session to dev;
Grant succeeded.
SQL> disconnect

SQL> connect DEV/developer
Connected.

Odebrání oprávnění CREATE SESSION

Chceme-li uživateli odebrat oprávnění CREATE SESSION, musíme použít příkaz REVOKE, jak ukazuje následující příklad:

C:>sqlplus /nolog
SQL> connect SYSTEM/password
Connected.

SQL> revoke create session from dev;
Revoke succeeded.
SQL> disconnect

SQL> connect DEV/developer
ORA-01045: user DEV lacks CREATE SESSION privilege;
logon denied

Jak zamknout/odemknout uživatelský účet

Pokud chceme na krátkou dobu zamknout účet nějakého zlobivého uživatele a později jej odemknout, musíme použít příkaz ALTER USER…ACCOUNT. Jak je ukázáno zde:

C:>sqlplus /nolog
SQL> connect SYSTEM/password

SQL> alter user DEV account lock;
User altered.
SQL> disconnect

SQL> connect DEV/developer
ORA-28000: the account is locked

SQL> connect SYSTEM/password

SQL> alter user DEV account unlock;
User altered.
SQL> disconnect

SQL> connect DEV/developer
Connected.

Potřebná oprávnění pro vytváření tabulek

Aby uživatel mohl ve svém schématu vytvářet tabulky, potřebuje oprávnění CREATE TABLE nebo oprávnění CREATE ANY TABLE. Druhé jmenované je mocnější a povoluje uživateli vytváření tabulek i v jiných schématech.
Následující příkladu ukazuje jak přiřadit oprávnění CREATE TABLE:

C:>sqlplus /nolog
SQL> connect DEV/developer

SQL> create table fyi (id NUMBER);
ORA-01031: insufficient privileges

SQL> disconnect
SQL> connect SYSTEM/password

SQL> grant create table to dev;
Grant succeeded.

SQL> disconnect
SQL> connect DEV/developer

SQL> create table fyi (id NUMBER);
ORA-01950: no privileges on tablespace 'SYSTEM'

Tato poslední chybová zpráva znamená, že uživatel „DEV“ není oprávněn používat tablespace „SYSTEM“. Proto mu musíme přiřadit jeho vlastní tablespace – viz následující bod.

Jak přiřadit uživateli tablespace

Když vytvoříme nějakého nového uživatele, Oracle mu přiřadí defaultně tablespace SYSTEM. Chceme-li toto změnit, můžeme přiřadit uživateli jiný tablespace použitím příkazu ALTER USER.
Následující příklad nám ukazuje jak změní výchozí tablespace uživatele DEV a přiřadí mu 4MB prostoru:

C:>sqlplus /nolog
SQL> connect SYSTEM/password

SQL> alter user dev default tablespace users;
User altered.

SQL> alter user dev quota 4M on users;
User altered.

SQL> disconnect
SQL> connect DEV/password

SQL> create table fyi (id NUMBER);
Table created.

SQL> drop table fyi;
Table dropped.

SQL> create table fyi (id NUMBER);
Table created.

Jak můžeme vidět, uživatel „DEV“ už může vytvořit a smazat tabulky.
Pokud chceme, aby uživatel neměl žádná omezení na vytváření tabulek v tablespace, přiřadíme mu systémové oprávnění UNLIMITED TABLESPACE.