Heim >Datenbank >MySQL-Tutorial >ORA-01950: 对表空间 'USERS' 无权限

ORA-01950: 对表空间 'USERS' 无权限

WBOY
WBOYOriginal
2016-06-07 17:21:163133Durchsuche

创建新的用户时,要指定default tablespace,否则它会把system表空间当成自己的缺省表空间。这样做是不提倡的。估计原来创建某

创建新的用户时,要指定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                          NO
SANY                          EXECUTE ANY PROCEDURE                    NO
SANY                          CREATE USER                              NO
SANY                          CREATE TABLE                            NO

SQL> 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(2
0));

表已创建。

SQL> disconnect
从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options 断开
SQL> desc bjwh
SP2-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)


问题解决。

 

create table test1 (
id varchar(20) default '0' not null,
name varchar(20) default '0' not null
)

alter user UserName quota 200M on TableSpaceName

或者:grant unlimited tablespace to username;或grant unlimited tablespace,dba to username;

第 1 行出现错误:
ORA-01950: 对表空间 'USERS'

无权限

后来查一下才发现我创建用户的时候经常忘记quota。一般我们创建用户的时候,一般要用create user wangfan identified by wangfan default tablespace test. 但一定还要加上一句:quota Storage(unlimited, 8K, 10M etc.) on tablespace; 否则就会出现对表空间使用无权限的错误。quota的意思是该用户可以得到在这个tablespace上所得到的空间。后来我就以sysdba的身份登陆,alter user wangfan quota unlimited on test;然后再创建表就没有问题了。

linux

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn