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

  • kan du forklare kommandoen alter database default tablespace users
  • På Oracle XE 11 eksisterer allerede brukerområdet, så du trenger bare å alter database default tablespace users; og alter user scott quota 50m on system;

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.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *