Korábban létrehoztam egy felhasználót:
SQL>create user suhail identified by password SQL>User created. SQL>Grant create session,create table to suhail; SQL>Grant Succeeded.
, de amikor suhail
és próbáljon létrehozni egy table
hibát kapok >. Milyen hiba van? Miért fordul elő?
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"
Oracle Database 11g Express Edition 11.2.0.2.0 kiadást használok
Válasz
Ez a hiba azt mondja, hogy a felhasználónak nincs kvótája a táblaterületen SYSTEM
amely az alapértelmezett állandó táblaterületként van beállítva. A felhasználóhoz így rendelheti hozzá a kvótát:
sql> alter user scott quota 50m on system;
Itt, 50m
azt jelenti, hogy a felhasználói kvóta a SYSTEM
táblaterületen 50 mebibájt. A kvótát beállíthatja unlimited
.
Mindazonáltal nem megfelelő gyakorlat a felhasználói és alkalmazásadatok tárolása a SYSTEM
táblaterületbe, mivel ez az adatok töredezettségét okozza és ezáltal rontja a teljesítményt. Ezért azt javasoljuk, hogy hozzon létre egy új állandó táblaterületet :
sql> create smallfile tablespace users datafile "/u01/app/oracle/oradata/ORCL/users.dbf" size 10g;
Ezután állítsa be alapértelmezett adatbázis állandó táblaterületként, hogy a felhasználók által létrehozott objektumok belépjenek az alapértelmezett táblaterületbe:
alter database default tablespace users
alter database default tablespace users;
ésalter user scott quota 50m on system;