ora-01950 对表空间无权限

创建新的用户时,要指定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)

 

问题解决。


用户x建表的时候提示:ora-01950:对表空间‘x’无权限

 

原因:用户没有resource权限

解决方法:连接sys用户,赋予用户x resource权限

          grant resource to x;

 

嘿嘿,又搜了下resource的知识,先学习,后转载:

###########################################################################################

  grant connect,resource to user;
  然后,用户包括的权限:
   CONNECT角色: --是授予最终用户的典型权利,最基本的
    ALTER SESSION --修改会话
    CREATE CLUSTER --建立聚簇
    CREATE DATABASE LINK --建立数据库链接
    CREATE SEQUENCE --建立序列
    CREATE SESSION --建立会话
    CREATE SYNONYM --建立同义词
    CREATE VIEW --建立视图

    RESOURCE角色: --是授予开发人员的
    CREATE CLUSTER --建立聚簇
    CREATE PROCEDURE --建立过程
    CREATE SEQUENCE --建立序列
    CREATE TABLE --建表
    CREATE TRIGGER --建立触发器
    CREATE TYPE --建立类型

    从dba_sys_privs里可以查到:
    SQL> select grantee,privilege from dba_sys_privs
         2 where grantee='RESOURCE' order by privilege;

    GRANTEE PRIVILEGE
    ------------ ----------------------
    RESOURCE CREATE CLUSTER
    RESOURCE CREATE INDEXTYPE
    RESOURCE CREATE OPERATOR
    RESOURCE CREATE PROCEDURE
    RESOURCE CREATE SEQUENCE
    RESOURCE CREATE TABLE
    RESOURCE CREATE TRIGGER
    RESOURCE CREATE TYPE
    已选择8行。


你可能感兴趣的:(Oracle,故障处理)