ORA-01950: no privileges on tablespace xxx ORA-01950: 對表空間 'xxx'無權限


場景:

創建用戶,在用戶scheme下新建了一張表,插入數據時報錯 ORA-01950: 對表空間 'xxx'無權限

創建用戶

/*第1步:創建臨時表空間  */
create temporary tablespace odi_temp 
tempfile 'C:\app\ORACLE\oradata\orcl\odi_temp.dbf'
size 50m 
autoextend on 
next 50m maxsize 20480m 
extent management local; 
  
/*第2步:創建數據表空間  */
create tablespace odi_data 
logging 
datafile 'C:\app\ORACLE\oradata\orcl\odi_data.dbf'
size 50m 
autoextend on 
next 50m maxsize 20480m 
extent management local; 
  
/*第3步:創建用戶並指定表空間  */
create user sakila identified by sakila
default tablespace odi_data 
temporary tablespace odi_temp
profile default ;

/*第4步:給用戶授予權限  */
grant connect,resource to sakila;

創建表

CREATE TABLE actor (
  actor_id numeric NOT NULL ,
  first_name VARCHAR(45) NOT NULL,
  last_name VARCHAR(45) NOT NULL,
  last_update DATE NOT NULL,
  PRIMARY KEY  (actor_id)
  );

插入數據時報錯

INSERT INTO actor (
    actor_id,
    first_name,
    last_name,
    last_update
)
VALUES
    (
        '1',
        'PENELOPE',
        'GUINESS',
        '2006-02-15 04:34:33.000'
    );

報錯信息:

ORA-01950: 對表空間 'ODI_DATA' 無權限

ORA-01950: no privileges on tablespace 'ODI_DATA'

原因:

沒有分配表空間配額: 

配額(quota):允許被使用的空間。用戶可以在表空間上可以使用的空間。

解決辦法:

使用sys用戶添加用戶在表空間上的配額,

alter user SAKILA quota unlimited on odi_data;

這個問題如果在創建用戶時,給該用戶授予表空間配額可以避免。下面的紅色部分

參照 http://docs.oracle.com/database/121/SQLRF/statements_8003.htm#SQLRF01503

/* 創建用戶並指定表空間  */
create user username identified by password 
default tablespace user_data 
temporary tablespace user_temp
quota unlimited
on user_data profile default ;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM