Tidligere opprettet jeg en bruker:
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 inn som suhail
og prøv å lage en table
Jeg får en feilmelding som sier ORA-01950: no privileges on tablespace "SYSTEM"
. Hvilken feil er det? Hvorfor skjer 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 bruker Oracle Database 11g Express Edition versjon 11.2.0.2.0
Svar
Denne feilen sier at brukeren ikke har kvote på tabellområdet SYSTEM
som er angitt som standard vedvarende tabellområde. Du kan tildele en bruker kvoten slik:
sql> alter user scott quota 50m on system;
Her, 50m
betyr at brukerkvoten på SYSTEM
tabellområdet er 50 mebytes. Du kan også sette kvoten til unlimited
.
Det er imidlertid dårlig praksis å lagre bruker- og applikasjonsdata i SYSTEM
tabellområde da det forårsaker datafragmentering og dermed forringer ytelsen. Så jeg vil anbefale deg å opprette et nytt permanent tabellområde :
sql> create smallfile tablespace users datafile "/u01/app/oracle/oradata/ORCL/users.dbf" size 10g;
Og angi den som standard databasepermanent tabellområde slik at objekter opprettet av brukerne går inn i standard tabellområde:
Kommentarer
Svar
Du må opprette ett nytt tabellområde i databasen fordi for SYSTEM
tablespace access, SYSDBA
privilegier kreves.
Så, lag ett nytt tabellområde og tildel det som standard tabellområde til alle brukere. Når du oppretter en bruker, vil det som standard gi tilordnet spesiell tabellplass.
alter database default tablespace users
alter database default tablespace users;
ogalter user scott quota 50m on system;