oracle如何设置 用户A 只可以查询用户B的特定视图,不可以查询其他表和视图

在oracle 中建立新用户A ,并GRANT connect TO A ,GRANT select on B. BOOK _V1 to A , GRANT select on C.BOOK _V1 to A 。但是使用A 用户登陆oracle 后,用户A 还可以访问C 用户下的所有TABLE (需要禁止此权限),不可以访问B 用户下的TABLE(正确的), 如何设置A 用户只可以访问我授权的两个view ,其他用户下的表均不可以访问呢?也就是C 用户下的表,用户A 是不可访问的

你需求就矛盾
你想让A访问C里的视图,可是C里的视图难道不指向C里的表吗
你不让A访问C的表,那C的视图出来也只能是空白的

给与connect 角色即可然后给与视图访问权限即可
就像这样

grant connect to WYDXBG1;
grant select on WYDXBG.SALES_2020 to WYDXBG1;

这样即可保证授予WYDXBG1只能查询SALES_2020的视图,另外建议给与一个resource角色否则没法建表
如果按上面的赋权后你的用户还能查询其他用户的权限,那么建议你查一下有没有赋予了select any table权限。以及connect 角色是不是被你赋予了其他权限
注意:connect 是角色,不是权限,它包含了一系列权限。