ORA-01950: no privileges on tablespace

关于grant授权转移不了系统权限 tablespace的问题

我是从sysdba授权给temp的。
sql>grant create table,create session ,execute any procedure to temp;
1  SQL> create table emp1(

2  empno number(4) primary key,

3  ename varchar2(10) not null,

4  deptno number(2)

5  );

ERROR at line 1:
ORA-01950: no privileges on tablespace 'USERS'
解决方法就是增加用户在表空间的使用量限制。
sql>connect   /    as sysdba
sql> alter user temp quota unlimited on users;
User altered.

1  SQL> create table emp1(

2  empno number(4) primary key,

3  ename varchar2(10) not null,

4  deptno number(2)

5  );


Table created.

下面在网上看到的情况差不多。


如 果用户只具有connect和resource角色,一样是创建不了表的,只所以用户被授予connect,resource角色后能够创建表,是因为在 授予resource角色的时候系统自动给用户赋予了unlimited tablespace这个系统权限,也就是用户可以使用存储空间了。
而你通过角色传递角色的时候,unlimited tablespace 这个系统权限是不能通过角色传递的,所以用户在授予了角色后只有connect,resource角色,而没有对空间的使用权限。
这个你可以用select * from session_privs;

一个例子
SQL> create table temp_a(a int);
create table temp_a(a int)
*
ERROR 位于第 1 行:
ORA-01950: no privileges on tablespace 'TBSCCDBDFLT'
然后执行
grant resource to USER_A,再执行,成功建表。
--如果,revoke resource from user_a; grant resource to role_a; gran role_a to user_a;不管用。
回复ORA-600
按照你的意思,不能把unlimited tablespace权限通过角色传递,那在定义每个用户的时候都要显式的这么分配一下,比较麻烦,而且如果用户一多,管理起来很乱,不如角色来得直接。有没有其他的办法?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值