Früher habe ich einen Benutzer erstellt:
SQL>create user suhail identified by password SQL>User created. SQL>Grant create session,create table to suhail; SQL>Grant Succeeded.
, aber wenn ich mich als suhail
und versuche, eine table
zu erstellen. Es wird eine Fehlermeldung angezeigt, dass ORA-01950: no privileges on tablespace "SYSTEM"
. Welcher Fehler ist das? Warum tritt es auf?
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"
Ich verwende Oracle Database 11g Express Edition Release 11.2.0.2.0
Antwort
Dieser Fehler besagt, dass der Benutzer kein Kontingent für den Tabellenbereich SYSTEM
hat Dies kann einem Benutzer das Kontingent wie folgt zuweisen:
sql> alter user scott quota 50m on system;
Hier 50m
bedeutet, dass das Benutzerkontingent im SYSTEM
-Tabellenbereich 50 Mebibyte beträgt. Sie können das Kontingent auch auf unlimited
setzen.
Es ist jedoch eine schlechte Praxis, Benutzer- und Anwendungsdaten im SYSTEM
-Tabellenbereich zu speichern, da dies zu Datenfragmentierung und damit zu Leistungseinbußen führt. Ich würde Ihnen daher empfehlen, einen neuen permanenten Tabellenbereich zu erstellen :
sql> create smallfile tablespace users datafile "/u01/app/oracle/oradata/ORCL/users.dbf" size 10g;
Legen Sie ihn dann als permanenten Standard-Datenbank-Tabellenbereich fest, damit von den Benutzern erstellte Objekte in diesen Standard-Tabellenbereich verschoben werden:
Kommentare
- Können Sie bitte den Befehl
alter database default tablespace users
erläutern? li> - Unter Oracle XE 11 ist der Benutzertabellenbereich bereits vorhanden, sodass Sie nur
alter database default tablespace users;
undalter user scott quota 50m on system;
verwenden müssen
Antwort
Sie müssen einen neuen Tabellenbereich in der Datenbank erstellen, da für die SYSTEM
Tablespace-Zugriff, SYSDBA
Berechtigungen sind erforderlich.
Erstellen Sie also einen neuen Tablespace und weisen Sie ihn allen Benutzern als Standard-Tablespace zu. Wenn Sie einen Benutzer erstellen, wird standardmäßig ein bestimmter Tabellenbereich zugewiesen.