ORA-01950 错误的根本原因,是用户在目标表空间上没有可用配额,而不是系统权限不足。要解决该问题,必须使用 ALTER USER ... QUOTA 显式分配表空间配额;仅设置默认表空间、授予权限,或创建用户时未指定配额,都不能生效。同时,QUOTA 只对永久表空间有效。 必须通过 ALTER
Oracle用户表空间使用配额设置方法
时间:2026-08-15
浏览:369
文章目录
ORA-01950 错误的根本原因,是用户在目标表空间上没有可用配额,而不是系统权限不足。要解决该问题,必须使用 ALTER USER ... QUOTA 显式分配表空间配额;仅设置默认表空间、授予权限,或创建用户时未指定配额,都不能生效。同时,QUOTA 只对永久表空间有效。

必须通过 ALTER USER ... QUOTA 显式设置配额,其他方式如授予权限、设置默认表空间、建用户时不带配额,均不能替代表空间配额配置。
为什么执行 CREATE TABLE 会报 ORA-01950
这个问题本质上并不是没有授予建表权限,而是目标表空间没有配置配额。即使已经执行了 GRANT CREATE TABLE TO scott,只要 scott 在目标表空间,例如 USERS,没有获得对应配额,建表操作就无法成功。
错误信息中的 “no privileges on tablespace” 容易让人误以为是权限不足,但这里的 “privileges” 实际上指的是表空间配额,而不是系统权限。
常见误判包括:
- 认为设置了
DEFAULT TABLESPACE USERS就可以直接写入。实际上,它只是在未指定TABLESPACE子句时决定对象默认存放位置,并不等于赋予写入能力。 - 认为
RESOURCE角色自带表空间配额。实际上,该角色并不包含任何配额。 - 查询
DBA_TS_QUOTAS结果为空时,误以为会继承默认值。实际上,这通常表示未配置配额,效果等同于QUOTA 0。
ALTER USER ... QUOTA 的三种合法取值
QUOTA 表示硬性上限,超过后会阻止相关 DDL 或 DML 操作,例如 INSERT 触发新 extent 分配时也会受限,它并不是建议值。
ALTER USER scott QUOTA 50M ON users;:将users表空间的使用上限严格限制为 50MB,达到上限后会报ORA-01536。ALTER USER scott QUOTA UNLIMITED ON app_data;:仅对app_data表空间取消容量限制,其他表空间仍需分别设置配额。ALTER USER scott QUOTA 0 ON system;:显式禁止在SYSTEM表空间中创建任何段,即使拥有DBA角色也不能写入,但不会影响已存在对象。
需要注意的是,QUOTA 0 并不等于撤销权限,它只是阻止继续写入。如果要完全收回不受配额限制的权限,还需要执行 REVOKE UNLIMITED TABLESPACE FROM scott。
哪些表空间不支持 QUOTA
QUOTA 仅对永久性数据表空间,即 PERMANENT 类型表空间生效。对于以下两类表空间,配额设置无实际作用:
- 临时表空间(
TEMPORARY):排序操作和全局临时表会使用这里,相关配额语法即使可以执行,实际上也会被忽略。 - 撤销表空间(
UNDO):事务回滚段由系统自动管理,不纳入用户配额控制范围。
如果需要控制临时空间使用量,应通过 ALTER USER ... TEMPORARY TABLESPACE ts_name 指定资源受限的临时表空间,并结合 PROFILE 中的 RESOURCE_LIMIT 与 SESSIONS_PER_USER 进行约束。
创建用户时直接配置配额更稳妥
如果在用户创建完成后再补充执行 ALTER USER,容易出现遗漏,尤其是在应用初始化脚本紧随用户创建后立即执行的情况下,更容易触发 ORA-01950。
推荐写法如下(Oracle 12c+ 支持):
CREATE USER app_user IDENTIFIED BY pwd DEFAULT TABLESPACE app_data TEMPORARY TABLESPACE temp QUOTA 200M ON app_data QUOTA 50M ON idx_tbs QUOTA 0 ON system;
这样配置后:
- 用户默认在
app_data表空间中写入对象,最大可用 200MB。 - 用户可以显式指定
TABLESPACE idx_tbs创建索引,但总量不能超过 50MB。 - 即使具备
CREATE TABLE权限,也不能在SYSTEM表空间中创建任何段。
还需注意,QUOTA 不会清理已存在对象,但后续 DML 一旦触发空间扩展,例如插入数据导致分配新的 extent,仍然可能因为超过配额限制而报错。
实用工具推荐
绿化、压缩、噪点和虚拟水印,自由调节做旧程度。
选择画质和输出格式,预览压缩前后的大小。