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
  • Unter Oracle XE 11 ist der Benutzertabellenbereich bereits vorhanden, sodass Sie nur alter database default tablespace users; und alter 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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.