背景
--以SYSTEM用户登录SQL*PLUS
--你想在另一个用户的shcema中创建表
症状
在创建表时得到ORA-1950故障报错:
SQL> create table scott.tiger (col1 number) tablespace tools;
create table scott.tiger (col1 number) tablespace tools
*
ORA-01950: no privileges on tablespace 'TOOLS'
错误: ORA 1950
错误描述:对表空间没有访问权限
原因:用户没有管理员的权限,造成给用户分配表空间配额时失败。
解决:授予用户在特定表空间创建对象的系统权限,或者在表空间中授予用户可以操作的指定空间资源。
但是执行了以下操作,仍然报错:
SQL> alter user SYSTEM quota unlimited on TOOLS;
故障原因
在另一个shema中创建了表,在其表空间中必须要有一定的配额,用来给表的初始化分配一定空间。
解决方法
需要创建表的schema在表空间上给用户分配无限制配额,即如下操作:
SQL> alter user SCOTT quota unlimited on TOOLS;
参考资料
Note:114673.1 DBA_SYS_PRIVS中没有不受限表空间权限的资源角色(RESOURCE Role in DBA_SYS_PRIVS does not Include UNLIMITED TABLESPACE Privilege)
Note:1005485.6 授予用户创建对象和创建角色权限时,产生ORA-1950错误(ORA-1950 When Creating an Object and Resource Role is Granted to the User)
Note:1084014.6 撤销DBA或RESOURCE权限,撤销用户无限制表空间权限(Revoking DBA or RESOURCE Privilege Revokes UNLIMITED TABLESPACE from the User)