不求甚解

此博客为个人学习之用,如与其他作品雷同,纯属巧合。

导航

Q:Oracle表空间使用权限错误:ORA-01950

Posted on 2024-02-18 10:41  三年三班王小朋  阅读(827)  评论(0编辑  收藏  举报

使用A用户账号(默认表空间tablespace_A),A用户表中插入数据报错ORA-01950

报错处理方法:

方法1:授予用户A unlimited tablespace权限

grant unlimited tablespace to A;

方法2:分配表空间使用配额(推荐)

alter user A quota unlimited on tablespace_A;

注意:unlimited tablespace 可以对所有表空间进行操作;所以生产环境尽量不要放开unlimited tablespace权限,尽量不要让人操作system 及 sys 表空间。

回收和修改表空间

revoke unlimited tablespace from A;
alter user abc quota unlimited on A;

相关数据字典:

  • dba_ts_quotas:所有用户的表空间配额
  • user_ts_quotas:当前用户的表空间配额
在两个数据字典中,max_bytes字段就是表示表空间限额的值了,单位是B,其中-1代表没有限制,其他的值多少就是多少的限额了。
 
unlimited tablespace权限特点:
  1. 系统权限unlimited tablespace不能被授予role,只能被授予用户。也就是说,unlimited tablespace系统权限不能包含在一个角色role中
  2. unlimited tablespace没有被包括在resource role和dba role中,但是unlimited tablespace随着resource或者dba的授予而授予用户的。也就是说,如果将role角色授予了某个用户,那么这个用户将会拥有unlimited tablespace系统权限
  3. unlimited tablespace不能伴随这resource被授予role而授予用户。也就是说加入resource角色被授予了role_test角色,然后把role_test授予了test用户,但是此时unlimited tablespace没有被授予test用户