Oracle

“ORA-01950:對錶空間 ‘SYSTEM’ 沒有權限”:這是什麼錯誤?

  • September 24, 2018

之前我創建了一個使用者:

SQL>create user suhail identified by password
SQL>User created.
SQL>Grant create session,create table to suhail;
SQL>Grant Succeeded.

但是當我以身份登錄suhail並嘗試創建一個時,table我收到一條錯誤消息*ORA-01950: no privileges on tablespace 'SYSTEM'*。這是什麼錯誤?為什麼會發生?


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 Release 11.2.0.2.0

SYSTEM此錯誤表示使用者在設置為預設持久表空間的表空間上沒有配額。您可以像這樣為使用者分配配額:

sql> alter user scott quota 50m on system;

這裡,50m表示SYSTEM表空間上的使用者配額為 50 MB。您還可以將配額設置為unlimited

但是,將使用者和應用程序數據儲存在SYSTEM表空間中是一種不好的做法,因為它會導致數據碎片並因此降低性能。所以我建議你創建一個新的永久表空間:

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

然後將其設置為預設數據庫永久表空間,以便使用者創建的對象進入該預設表空間:

sql> alter database default tablespace users;

引用自:https://dba.stackexchange.com/questions/36373