“ORA-01950: nessun privilegio sul tablespace 'SYSTEM'”: che errore è?


15

In precedenza ho creato un utente:

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

ma quando eseguo il login come suhaile provo a crearlo, tableviene visualizzato un messaggio di errore ORA-01950: no privileges on tablespace 'SYSTEM'. Che errore è? Perché succede?


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'

Sto utilizzando Oracle Database 11g Express Edition versione 11.2.0.2.0

Risposte:


22

Questo errore indica che l'utente non ha quote sul tablespace SYSTEMimpostato come tablespace persistente predefinito. Puoi assegnare a un utente la quota in questo modo:

sql> alter user scott quota 50m on system;

Qui, 50msignifica che la quota utente sul SYSTEMtablespace è di 50 mebibyte. È inoltre possibile impostare la quota su unlimited.

Tuttavia, è una cattiva pratica archiviare i dati utente e dell'applicazione nel SYSTEMtablespace poiché causa la frammentazione dei dati e quindi degrada le prestazioni. Quindi ti consiglio di creare un nuovo tablespace permanente:

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

E quindi impostarlo come tablespace permanente del database predefinito in modo che gli oggetti creati dagli utenti vadano nello spazio tabella predefinito:

sql> alter database default tablespace users;

puoi per favore spiegare il comandoalter database default tablespace users
Suhail Gupta,

1
Su Oracle XE 11, il tablespace degli utenti esiste già, quindi devi solo alter database default tablespace users;ealter user scott quota 50m on system;
Andrew Spencer

2

È necessario creare un nuovo tablespace nel database perché per l' SYSTEMaccesso al tablespace SYSDBAsono richiesti i privilegi.

Quindi, crea un nuovo tablespace e assegnalo come tablespace predefinito a tutti gli utenti. Quando si crea un utente, per impostazione predefinita assegnerà un particolare tablespace.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.