Chinaunix首页 | 论坛 | 博客
  • 博客访问: 171209
  • 博文数量: 28
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 315
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-03 12:25
个人简介

ulj

文章分类

全部博文(28)

文章存档

2011年(1)

2009年(7)

2008年(1)

2006年(19)

我的朋友

分类: Oracle

2006-12-11 03:12:41


我是从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权限通过角色传递,那在定义每个用户的时候都要显式的这么分配一下,比较麻烦,而且如果用户一多,管理起来很乱,不如角色来得直接。有没有其他的办法?


阅读(3647) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~