Wcześniej utworzyłem użytkownika:

SQL>create user suhail identified by password SQL>User created. SQL>Grant create session,create table to suhail; SQL>Grant Succeeded. 

ale kiedy loguję się jako suhail i próbuję utworzyć table pojawia się komunikat o błędzie: ORA-01950: no privileges on tablespace "SYSTEM" . Jaki to błąd? Dlaczego tak się dzieje?


SQL> connect suhail Enter password: Connected. SQL> create table suhail_table(name char(10)); create table suhail_table(name char(10)) * ERROR at line 1: ORA-01950: no privileges on tablespace "SYSTEM" 

Używam Oracle Database 11g Express Edition w wersji 11.2.0.2.0

Odpowiedź

Ten błąd oznacza, że użytkownik nie ma limitu przestrzeni tabel SYSTEM który jest ustawiony jako domyślny trwały obszar tabel. Możesz przypisać użytkownikowi limit w następujący sposób:

sql> alter user scott quota 50m on system; 

Tutaj 50m oznacza, że limit użytkownika w obszarze tabel SYSTEM wynosi 50 MB. Możesz również ustawić limit na unlimited.

Jednak przechowywanie danych użytkownika i aplikacji w SYSTEM obszarze tabel jest złą praktyką, ponieważ powoduje to fragmentację danych, a tym samym obniża wydajność. Dlatego zalecałbym utworzenie nowego stałego obszaru tabel :

sql> create smallfile tablespace users datafile "/u01/app/oracle/oradata/ORCL/users.dbf" size 10g; 

A następnie ustaw go jako domyślny stały obszar tabel bazy danych, aby obiekty utworzone przez użytkowników trafiały do tego domyślnego obszaru tabel:

Komentarze

  • czy możesz wyjaśnić polecenie alter database default tablespace users
  • W Oracle XE 11 przestrzeń tabel użytkowników już istnieje, więc potrzebujesz tylko alter database default tablespace users; i alter user scott quota 50m on system;

Odpowiedź

Musisz utworzyć jeden nowy obszar tabel w bazie danych, ponieważ dla SYSTEM dostęp do obszaru tabel, SYSDBA uprawnienia są wymagane.

Zatem utwórz nowy obszar tabel i przypisz go jako domyślny obszar tabel wszystkim użytkownikom. Kiedy tworzysz dowolnego użytkownika, domyślnie przypisuje on określoną przestrzeń tabel.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *