ORA-01950: no privileges on tablespace xxx ORA-01950: 对表空间 'xxx'无权限
ORA-01950: no privileges on tablespace xxx ORA-01950: 对表空间 'xxx'无权限
小强斋太 发表于1年前
ORA-01950: no privileges on tablespace xxx ORA-01950: 对表空间 'xxx'无权限
  • 发表于 1年前
  • 阅读 0
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

场景:

创建用户,在用户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 ;
共有 人打赏支持
粉丝 0
博文 181
码字总数 0
×
小强斋太
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: