首页 > 代码库 > ORA-01950:对表空间 'USERS' 无权限 ?????
ORA-01950:对表空间 'USERS' 无权限 ?????
在oracle创建了一个新的表空间和一个新的用户,当用这个新用户创建表时, 却出现:ORA-01950: 表空 间‘USERS‘中无权限 。 我已经把创建表的权限赋给了此用户,怎么还会缺少权限呢?解决办法 方法1:赋予该用户RESOURCE角色 SQL> connect / as sysdba 已连接。 SQL> grant resource to zhaoh; 授权成功。 SQL> connect zhaoh/a 已连接。 SQL> create table test (ID number,name varchar2(40)); 表已创建。 方法2:增加该用户表空 间‘USERS‘中的配额 SQL> select * from user_sys_privs; USERNAME PRIVILEGE ADM ------------------------------ ---------------------------------------- --- ZHAOH CREATE TABLE NO SQL> connect / as sysdba; 已连接。 SQL> ALTER USER "ZHAOH" QUOTA UNLIMITED ON "USERS"; 用户已更改。 SQL> connect zhaoh/a 已连接。 SQL> create table test (ID number,name varchar2(40)); 表已创建。 创建新的用户时,要指定default tablespace,否则它会把system表空间当成自己的缺省表空间。这样做是不提倡的。估计原来创建某个用户的时候没有指定缺省表空间,而现在它使用系统表空间的权限被DBA给收回了。 先用的简单的办法试试,一般缺省的ORACLE安装都是有USERS表空间的。 比如你要在用户(或SCHEMA)usera中建表,那么你用SYSTEM登录ORACLE后,执行如下SQL ALTER USER usera QUOTA UNLIMITED ON USERS; 如果没有USERS表空间,则会报错,你可以找一个其他的表空间,从v$tablespace可以看到所有的表空间。 下面情况sany用户开始创建的时候没有制定default tablespace ********SQL> connect sany/as646333已连接。SQL> select * from user_sys_privs 2 ;USERNAME PRIVILEGE ADM------------------------------ ---------------------------------------- ---SANY CREATE SESSION NOSANY EXECUTE ANY PROCEDURE NOSANY CREATE USER NOSANY CREATE TABLE NOSQL> create table bjwh(user_id number(5),user_name varchar2(20),phone varchar2(12),email varchar2(20));create table bjwh(user_id number(5),user_name varchar2(20),phone varchar2(12),email varchar2(20))*第 1 行出现错误:ORA-01950: 对表空间 ‘USERS‘ 无权限SQL> connect system/oracle已连接。SQL> alter user sany quota unlimited on users;用户已更改。SQL> connect sany/as646333已连接。SQL> create table bjwh(user_id number(5),user_name varchar2(20),phone varchar2(12),email varchar2(20));表已创建。SQL> disconnect从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining options 断开SQL> desc bjwhSP2-0640: 未连接SP2-0641: "DESCRIBE" 需要连接至服务器SQL> connect sany/as646333已连接。SQL> desc bjwh 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- USER_ID NUMBER(5) USER_NAME VARCHAR2(20) PHONE VARCHAR2(12) EMAIL VARCHAR2(20) 问题解决。以前执行了grant dba to 用户查了一下dba角色中有一项 :DBA UNLIMITED TABLESPACE YES现在执行了revoke dba from 用户报错:ora-01950:对表空间XXX无权限 办法:alter user username quota umlimited on tablespacename;或者 grant resource to username 也可以因为 grant resource to username 时 自动获得了有unlimited tablespace的系统权限从online documents 找到这段话:When you grant the DBA and RESOURCE roles to a user or role with Oracle7 release 7.2.2 or later, the user or role is also granted the UNLIMITED TABLESPACE system privilege. When you revoke either role from a user or role, the UNLIMITED TABLESPACE system privilege is also revoked. The UNLIMITED TABLESPACE can also be revoked independent of the DBA and RESOURCE roles.
ORA-01950:对表空间 'USERS' 无权限 ?????
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。