default tablespace - Oracle 9 i 10

Jakie są domyślne przestrzenie tabel dla danych i danych tymczasowych

Utwórzmy użytkownika.
CREATE USER test identified by test;

User created.

SQL> select username,temporary_tablespace,default_tablespace
  2  from dba_users where username ='TEST';

USERNAME    TEMPORARY_TABLESPACE DEFAULT_TABLESPACE
----------- -------------------- ---------------------
TEST        SYSTEM               SYSTEM

Jak widzimy - domyślną przestrzenią tabel dla tego uzytkownika jest SYSTEM. Taki stan rzeczy jest reliktem z czasów gdy bazy danych były małe i wszystko mogło mieścić się w przestrzemi SYSTEM. Nie jest to dobra systuacja - może to na przykład prowadzić do zapchania miejsca w przestrzeni systemowej. Jak temu zapobiec?

Jak ustawić domyślną przestrzeń tabel dla bazy?

SQL> alter database default tablespace users;

Database altered.

W Oracle 9 powyższe jest niestety niemożliwe i wykoczy bląd:

ERROR at line 1:
ORA-12909: TEMPORARY keyword expected

SQL> alter database default temporary  tablespace temp;

Database altered.

Teraz sprawdźmy czy coś się zmieniło:


SQL> select username,temporary_tablespace,default_tablespace
  2  from dba_users where username ='TEST';

USERNAME     TEMPORARY_TABLESPACE    DEFAULT_TABLESPACE
------------ ----------------------  ------------------
TEST         TEMP                    USERS

Jak widać zmiany objęły nawet użytkownika, który został utworzony wcześniej.

Jak ustawić domyślną przestrzeń tabel dla użytkownika?

 SQL>ALTER USER test DEFAULT TABLESPACE users;
 User altered.
 SQL>ALTER USER test TEMPORARY TABLESPACE temp;
 User altered.