Anterior am creat un utilizator:
SQL>create user suhail identified by password SQL>User created. SQL>Grant create session,create table to suhail; SQL>Grant Succeeded.
dar când mă autentific ca suhail
și încercați să creați un table
Am primit o eroare spunând ORA-01950: no privileges on tablespace "SYSTEM"
. Ce eroare este? De ce apare?
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"
Folosesc Oracle Database 11g Express Edition Release 11.2.0.2.0
Răspuns
Această eroare spune că utilizatorul nu are cote pe spațiul tabel SYSTEM
care este setat ca spațiu de tabel persistent implicit. Puteți atribui unui utilizator cota astfel:
sql> alter user scott quota 50m on system;
Aici, 50m
înseamnă că cota de utilizator din spațiul de tabel SYSTEM
este de 50 mebibiți. De asemenea, puteți seta cota la unlimited
.
Cu toate acestea, este o practică nepotrivită să stocați datele utilizatorilor și ale aplicațiilor în spațiul de tabel SYSTEM
deoarece provoacă fragmentarea datelor și astfel degradează performanța. Așadar, vă recomand să creați un nou spațiu de tabel :
sql> create smallfile tablespace users datafile "/u01/app/oracle/oradata/ORCL/users.dbf" size 10g;
Și apoi setați-l ca spațiu tabelar permanent al bazei de date implicite, astfel încât obiectele create de utilizatori să intre în acel tabel implicit:
Comentarii
Răspuns
Trebuie să creați un spațiu de tabel nou în baza de date, deoarece pentru SYSTEM
acces spațiu tabel, sunt necesare privilegii SYSDBA
.
Deci, creați un spațiu tabel nou și atribuiți-l ca spațiu tabel implicit tuturor utilizatorilor. Când creați orice utilizator, în mod implicit acesta va atribui un anumit spațiu de tabelă.
alter database default tablespace users
alter database default tablespace users;
șialter user scott quota 50m on system;