oracle10g建用户的问题

时间:2023-01-27 07:30:41
我用system用户在 tablespace1(非system表空间)下建了一个表table1
然后我再建了一个用户user1默认表空间tablespace1,给user1授权,但user1访问不到table1表 提示表或视图不存在.
更郁闷的是 我用user1建个table2表..用system用户访问也访问不到..提示也是表或视图不存在.
我的sql语句是这样的..

sqlplus system/sss@testdb
//建表空间
create tablespace tablespace1
logging
datafile 'H:\oracle\product\10.2.0\oradata\flexcc\cic.dbf'
size 32m 
autoextend on 
next 32m maxsize 2048m
extent management local;
//建表
create table table1(...) tablespace tablespace1
//建user1
create user user1 identified by test default tablespace tablespace1
//给user1加权限.
GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,SELECT ALL
   DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE, 
      DBA,CONNECT,RESOURCE,CREATE SESSION,CREATE SEQUENCE TO user1
//用user1登录
conn user1/test



13 个解决方案

#1


我用system用户在 tablespace1(非system表空间)下建了一个表table1 
然后我再建了一个用户user1默认表空间tablespace1,给user1授权,但user1访问不到table1表 提示表或视图不存在. 

table1在system用户下,在system下对user1授一个对象权限,如
conn system

grant select on table1 to user1;

conn user1

select * from system.table1;

更郁闷的是 我用user1建个table2表..用system用户访问也访问不到..提示也是表或视图不存在. 
我的sql语句是这样的.. 

system可以访问user1.table2,要这样
conn system

select * from user1.table2;

#2


查看用户权限

#3


我用system用户在 tablespace1(非system表空间)下建了一个表table1 
然后我再建了一个用户user1默认表空间tablespace1,给user1授权,但user1访问不到table1表 提示表或视图不存在.
user1应该这样访问,前提是user1用户有访问table1的权限:
select * from system.table1; 

更郁闷的是 我用user1建个table2表..用system用户访问也访问不到..提示也是表或视图不存在. 
我的sql语句是这样的.. 
system用户应该这样访问table2表:
select * from user1.table2;

#4


去web控制台查看下
多明了的

#5


A用户访问B用户的表时要加上用户名B的
#1的已经说清楚了 
你去试试看吧

#6


A用户访问B用户的表时要加上用户名B的
#1的已经说清楚了 
你去试试看吧

#7


那么怎么样才可以不加用户名就可以访问呢..就是给一个库加几个访问的用户.

#8


我的访问没有问题啊,就是给用户赋上dba一个权限就可以!

#9


你建立顺序搞乱了,如果你想使用user1访问你的表,那么首先要建立user1用户,然后换作user1登录,然后建立表.这样表归属于user1,访问时不需要加用户名,
如果你确实需要user1去访问别的用户的表,可以给表创建同义词,其他用户即可不加用户名访问

#10


JFL

#11


学习 lz

#12


表的访问和所属的关系你没搞明白,谁建表谁拥有,如果你是user1建立的表,那个这个表就是user1的,如果你要用其它用户访问这个表的话,你要通过授权给user1,但那个用户访问的时候还是要在表前面加上表的所有者user1.tabname才能访问,这样子的目的为的就是防止表同名,因为一个用户下面只能有一个同名的表,但数据库里面可以有多个同名的表,这些表分别属于不同的用户,但可以再统一个表空间,或者分区上。

#13


select * from sys.temp_t
是需要这样才能访问的,因为在建立表的时候是sys用户,所以表的权限就属于sys用户,如果想直接查询表名获得数据可以建立《同义词》

#1


我用system用户在 tablespace1(非system表空间)下建了一个表table1 
然后我再建了一个用户user1默认表空间tablespace1,给user1授权,但user1访问不到table1表 提示表或视图不存在. 

table1在system用户下,在system下对user1授一个对象权限,如
conn system

grant select on table1 to user1;

conn user1

select * from system.table1;

更郁闷的是 我用user1建个table2表..用system用户访问也访问不到..提示也是表或视图不存在. 
我的sql语句是这样的.. 

system可以访问user1.table2,要这样
conn system

select * from user1.table2;

#2


查看用户权限

#3


我用system用户在 tablespace1(非system表空间)下建了一个表table1 
然后我再建了一个用户user1默认表空间tablespace1,给user1授权,但user1访问不到table1表 提示表或视图不存在.
user1应该这样访问,前提是user1用户有访问table1的权限:
select * from system.table1; 

更郁闷的是 我用user1建个table2表..用system用户访问也访问不到..提示也是表或视图不存在. 
我的sql语句是这样的.. 
system用户应该这样访问table2表:
select * from user1.table2;

#4


去web控制台查看下
多明了的

#5


A用户访问B用户的表时要加上用户名B的
#1的已经说清楚了 
你去试试看吧

#6


A用户访问B用户的表时要加上用户名B的
#1的已经说清楚了 
你去试试看吧

#7


那么怎么样才可以不加用户名就可以访问呢..就是给一个库加几个访问的用户.

#8


我的访问没有问题啊,就是给用户赋上dba一个权限就可以!

#9


你建立顺序搞乱了,如果你想使用user1访问你的表,那么首先要建立user1用户,然后换作user1登录,然后建立表.这样表归属于user1,访问时不需要加用户名,
如果你确实需要user1去访问别的用户的表,可以给表创建同义词,其他用户即可不加用户名访问

#10


JFL

#11


学习 lz

#12


表的访问和所属的关系你没搞明白,谁建表谁拥有,如果你是user1建立的表,那个这个表就是user1的,如果你要用其它用户访问这个表的话,你要通过授权给user1,但那个用户访问的时候还是要在表前面加上表的所有者user1.tabname才能访问,这样子的目的为的就是防止表同名,因为一个用户下面只能有一个同名的表,但数据库里面可以有多个同名的表,这些表分别属于不同的用户,但可以再统一个表空间,或者分区上。

#13


select * from sys.temp_t
是需要这样才能访问的,因为在建立表的时候是sys用户,所以表的权限就属于sys用户,如果想直接查询表名获得数据可以建立《同义词》