oracle中怎么在一个用户(B)中查询另一个用户(A)的use_tables表?
相当于怎么把A用户的查询user_tables表的权限给B用户?在B用户中查询A用户的user_tables表。grantallonA.user_tablestoB会报错...
相当于怎么把A用户的查询user_tables表的权限给B用户?在B用户中查询A用户的user_tables表。
grant all on A.user_tables to B 会报错,表或试图不存在。 展开
grant all on A.user_tables to B 会报错,表或试图不存在。 展开
3个回答
展开全部
由于user_tables表的特殊性,基于权限的方法目前尚未找到合适方法,不过你可以通过创建视图进行解决
一.第一种方法,在dba 用户下创建基于dba_tables的视图;
1.create view V_A_tables as select * from dba_tables where owner='A';
2.grant select on V_A_tables to B;
3. 进入用户B, select * from sys.V_A_tables ;
二. 第二种方法是在A用户下创建视图并赋权限;
如有疑问,请追问 谢谢
一.第一种方法,在dba 用户下创建基于dba_tables的视图;
1.create view V_A_tables as select * from dba_tables where owner='A';
2.grant select on V_A_tables to B;
3. 进入用户B, select * from sys.V_A_tables ;
二. 第二种方法是在A用户下创建视图并赋权限;
如有疑问,请追问 谢谢
更多追问追答
追问
没有dba用户权限,进不去,只能用第二种方法,两条语句都成功了,但是查询结果不对,还是当前用户下的表信息,我写不知道对不对,你看下。
A用户下:create view A_user_tables as select * from user_tables;
grant select on A.A_user_tables to B
B用户下:select * from A.A_user_tables
展开全部
user_tables是每个用户独有的
你要实现的话要把A的所有表的查询权限给B , grant select on all tables to B;
然后再all_tables 里面可以查看到
select * from all_tables where owner='B';
all_tables 比user_tables多一个owner字段
你要实现的话要把A的所有表的查询权限给B , grant select on all tables to B;
然后再all_tables 里面可以查看到
select * from all_tables where owner='B';
all_tables 比user_tables多一个owner字段
追问
已经解决了,用all_all_user_tables就可以区分了,不用分权限的。虽然没能帮到多少,但还是谢谢了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select * from a.表明 ,这样就行。
更多追问追答
追问
已经早试过了,这样可以我就不用问了,也会报错的,表或试图不存在…………
追答
grant select on user_tables to b; 在a的用户下面这样写
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询