Tidligere oprettede jeg en bruger:
SQL>create user suhail identified by password SQL>User created. SQL>Grant create session,create table to suhail; SQL>Grant Succeeded.
men når jeg logger ind som suhail
og prøv at oprette en table
Jeg får en fejl med at sige ORA-01950: no privileges on tablespace "SYSTEM"
. Hvilken fejl er det? Hvorfor sker det?
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"
Jeg bruger Oracle Database 11g Express Edition version 11.2.0.2.0
Svar
Denne fejl siger, at brugeren ikke har en kvote på tablespace SYSTEM
som er indstillet som standard vedvarende tabellerum. Du kan tildele en bruger kvoten som denne:
sql> alter user scott quota 50m on system;
Her, 50m
betyder, at brugerkvoten på SYSTEM
-tabellen er 50 mebibytes. Du kan også indstille kvoten til unlimited
.
Det er dog en dårlig praksis at gemme bruger- og applikationsdata i SYSTEM
tablespace, da det forårsager datafragmentering og dermed forringer ydeevnen. Så jeg vil anbefale dig at oprette et nyt permanent tablespace :
sql> create smallfile tablespace users datafile "/u01/app/oracle/oradata/ORCL/users.dbf" size 10g;
Og indstil det derefter som den permanente standardtabelle i standarddatabasen, så objekter oprettet af brugerne går ind i standardtabellens rum:
Kommentarer
Svar
Du skal oprette et nyt tabelområde i databasen, fordi for SYSTEM
tablespace access, SYSDBA
privilegier er påkrævet.
Så lav et nyt tablespace, og tildel det som standardtabelspace til alle brugere. Når du opretter en bruger, vil det som standard give tildele bestemt tabellerum.
alter database default tablespace users
alter database default tablespace users;
ogalter user scott quota 50m on system;