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 会报错,表或试图不存在。
展开
 我来答
中工小熊
推荐于2017-11-26 · 超过26用户采纳过TA的回答
知道答主
回答量:76
采纳率:0%
帮助的人:65.9万
展开全部
由于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用户权限,进不去,只能用第二种方法,两条语句都成功了,但是查询结果不对,还是当前用户下的表信息,我写不知道对不对,你看下。
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
追答

没错,你可以试试看, 附上我测试过的图片

tj_angela
2013-09-23 · TA获得超过7530个赞
知道大有可为答主
回答量:6797
采纳率:75%
帮助的人:2582万
展开全部
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字段
追问
已经解决了,用all_all_user_tables就可以区分了,不用分权限的。虽然没能帮到多少,但还是谢谢了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
飘逸欲逆天
2013-09-23
知道答主
回答量:6
采纳率:0%
帮助的人:3.1万
展开全部
select * from a.表明 ,这样就行。
更多追问追答
追问
已经早试过了,这样可以我就不用问了,也会报错的,表或试图不存在…………
追答
grant select on user_tables to b;  在a的用户下面这样写
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式