Tidigare skapade jag en användare:
SQL>create user suhail identified by password SQL>User created. SQL>Grant create session,create table to suhail; SQL>Grant Succeeded.
men när jag loggar in som suhail
och försök skapa en table
Jag får ett felmeddelande som säger ORA-01950: no privileges on tablespace "SYSTEM"
. Vilket fel är det? Varför inträffar det?
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"
Jag använder Oracle Database 11g Express Edition version 11.2.0.2.0
Svar
Detta fel säger att användaren inte har någon kvot i tabellutrymmet SYSTEM
som är inställd som standard ihållande tabellutrymme. Du kan tilldela en användare kvoten så här:
sql> alter user scott quota 50m on system;
Här, 50m
betyder att användarkvoten på SYSTEM
tabellutrymmet är 50 mebibytes. Du kan också ställa kvoten till unlimited
.
Det är dock dåligt att lagra användar- och applikationsdata i SYSTEM
tabellutrymme eftersom det orsakar datafragmentering och därmed försämrar prestanda. Så jag skulle rekommendera dig att skapa en ny permanent tabellutrymme :
sql> create smallfile tablespace users datafile "/u01/app/oracle/oradata/ORCL/users.dbf" size 10g;
Ställ sedan in den som permanent databasens permanenta tabellutrymme så att objekt som skapats av användarna går in i standardtabellutrymmet:
Kommentarer
Svar
Du måste skapa en ny tabellutrymme i databasen för SYSTEM
tablespace access, SYSDBA
behörigheter krävs.
Skapa en ny tabellutrymme och tilldela den som standardtabellutrymme till alla användare. När du skapar en användare kommer den som standard att tilldela särskild tabellutrymme.
alter database default tablespace users
alter database default tablespace users;
ochalter user scott quota 50m on system;