日期:2014-05-17  浏览次数:20808 次

新手问题,关于用户权限
大家好,刚使用Oracle,有个问题,我有两个用户,user1和user2,
在user1下,已经给user2分配权限grang select any table to user2,
但在user2下,查表时,一定得select * from user1.tab1这种形式吗,
不能直接select * from tab1吗,请问各位大侠帮忙,
最好有人能介绍下oracle用户,scheme,实体间权限的用法,禁忌!!等等

------解决方案--------------------
因為表是屬於user1的,因此你需要這樣寫,你也可以建立同義詞,然後就可以直接寫了,如
SQL code

create synonym tab1 for user1.tab1;
--建好已後,用user2就可以直接選了
select * from tab1

------解决方案--------------------
不能直接select * from tab1,
必须select * from user1.tab1.

如果一定需要这样,
首先sys登陆,
sqlplus / as sysdba
赋予user1 create public synonym权限。
grant create public synonym to user1;

然后user1登陆
sqlplus user1/password
创建public synonym
create public synonym tab1 for tab1;
grant select on tab1 to user2;

然后user2登陆
select * from tab1;
------解决方案--------------------
你的这个问题是有关Oracle用户模式的问题~

user1创建的表是属于user1的模式的,其它的用户想要查询user1创建的表,是要明确表是在user1模式下面的,也就是user1.tab1

当然,楼上的几位也说了可以定义同义词,来方便使用其它用户模式下面的表。