大家好,刚使用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
当然,楼上的几位也说了可以定义同义词,来方便使用其它用户模式下面的表。