"ORA-01950: Keine Berechtigungen für den Tablespace" SYSTEM "": Welcher Fehler liegt vor?


15

Zuvor 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 anmelde suhailund versuche, eine zu erstellen table, wird eine Fehlermeldung angezeigt 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

Antworten:


22

Dieser Fehler besagt, dass der Benutzer kein Kontingent für den Tabellenbereich hat, SYSTEMder als permanenter Standardtabellenbereich festgelegt ist. Sie können einem Benutzer das Kontingent folgendermaßen zuweisen:

sql> alter user scott quota 50m on system;

Dies 50mbedeutet, dass das Benutzerkontingent für den SYSTEMTablespace 50 Mebibyte beträgt. Sie können das Kontingent auch auf festlegen unlimited.

Es ist jedoch eine schlechte Praxis, Benutzer- und Anwendungsdaten im SYSTEMTablespace zu speichern, da dies zu einer Datenfragmentierung führt und somit die Leistung beeinträchtigt. Daher würde ich Ihnen empfehlen, einen neuen permanenten Tablespace zu erstellen:

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

Legen Sie es dann als permanenten Standardtabellenbereich für die Datenbank fest, sodass von den Benutzern erstellte Objekte in diesen Standardtabellenbereich verschoben werden:

sql> alter database default tablespace users;

können Sie bitte den Befehl erklärenalter database default tablespace users
Suhail Gupta

1
Auf Oracle XE 11 ist der Benutzer-Tablespace bereits vorhanden, sodass Sie nur noch alter database default tablespace users;andalter user scott quota 50m on system;
Andrew Spencer

2

Sie müssen einen neuen Tablespace in der Datenbank erstellen, da für den SYSTEMTablespace-Zugriff SYSDBABerechtigungen erforderlich sind.

Erstellen Sie daher einen neuen Tablespace und weisen Sie ihn allen Benutzern als Standard-Tablespace zu. Wenn Sie einen Benutzer erstellen, wird standardmäßig ein bestimmter Tablespace zugewiesen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.