我是从sysdba授权给ulj的。
sql>grant create table,create session ,execute any procedure to ulj;
SQL> create table syy(kk integer,kfkfsd number(8,3));
create table yy(kk integer,kfkfsd number(8,3))
*
ERROR at line 1:
ORA-01950: no privileges on tablespace 'USERS'
解决方法就是增加用户在表空间的使用量限制。
sql>connect /as sysdba
sql>alter user ulj quota unlimited on users;
User altered.
SQL> create table yy(kk integer,kfkfsd number(8,3));
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权限通过角色传递,那在定义每个用户的时候都要显式的这么分配一下,比较麻烦,而且如果用户一多,管理起来很乱,不如角色来得直接。有没有其他的办法?
阅读(3702) | 评论(0) | 转发(0) |