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