Anteriormente criei um usuário:
SQL>create user suhail identified by password
SQL>User created.
SQL>Grant create session,create table to suhail;
SQL>Grant Succeeded.
mas quando eu entro como suhail
e tento criar um table
recebo um erro dizendo ORA-01950: no privileges on tablespace 'SYSTEM'
. Que erro é? Por que ocorre?
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'
Estou usando o Oracle Database 11g Express Edition Release 11.2.0.2.0
Este erro diz que o usuário não tem cota no tablespace
SYSTEM
que está definido como o tablespace persistente padrão. Você pode atribuir a cota a um usuário assim:Aqui,
50m
significa que a cota do usuário noSYSTEM
tablespace é de 50 mebibytes. Você também pode definir a cota paraunlimited
.No entanto, é uma prática ruim armazenar dados do usuário e do aplicativo no
SYSTEM
tablespace, pois isso causa fragmentação de dados e, portanto, degrada o desempenho. Então eu recomendo que você crie um novo tablespace permanente:E, em seguida, defina-o como o tablespace permanente do banco de dados padrão para que os objetos criados pelos usuários entrem nesse tablespace padrão:
Você precisa criar um novo tablespace no banco de dados porque, para o
SYSTEM
acesso ao tablespace,SYSDBA
são necessários privilégios.Portanto, crie um novo tablespace e atribua-o como tablespace padrão para todos os usuários. Quando você cria qualquer usuário, por padrão, ele atribuirá um espaço de tabela específico.