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 ;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律