需要创建一个用户 只有查询权限  
于是CREATE USER selectuser   IDENTIFIED BY selectuser  ACCOUNT UNLOCK;
grant select any table to selectuser; 
grant connect to selectuser; 
grant select any dictionary to selectuser;
创建了这个selectuser用户
然后发现 使用selectuser这个用户查询某用户下的一个表 无法查询出内容select * from user01.table01 (查询结果只有列名 没有内容)
但是使用用户user01 查询这个table01 表 是可以查询出表中内容的 另外使用sys用户也能查询出表中内容
于是赋dba权限给selectuser用户 通过normal 登录 依然无法查询出表中内容 也不报错
                                                 通过sysdba 登录 可以查询到表中内容
selectuser用户在没有赋予dba权限时 是可以查询到user01下其他表的内容的 仅table01 无法查询
现在如何在selectusers 仅有查询权限下 能够查询到table01中的内容呢 ?另外 查询 table01 的建表语句 确实是在用户user01下 有索引
还有 查询语句为 select * from user01.table01 同时用sys用户执行 和 user01  执行  sql_id 完全相同 
但是 分别执行 select count(*) from user01.table01  的结果却不同 
sys 用户的执行结果为12万条  user01 的执行结果为10000条 以上就是我在真实环境中遇到的问题 仅仅把用户名和表名替换了下 
系统 aix 6.1   oracle 10.2.0.4 请各位大神给些建议

解决方案 »

  1.   

    谢谢你的支持 oracle 表有个行级访问权限 是不是和这个有关 
    同一库中
    sys用户 和user01 用户 select  count(*)from table01  的结果大不相同 
    我又仔细查看了下建表语句 里面有VDP的存在  
      

  2.   

    VDP的作用就是用户在查询表的时候自动增加一个where条件,所以不同用户查询同一张表得到不同的结果就很正常了
      

  3.   

    还有一个问题 用户A下的表A 设置了数据访问控制 sys 用户可以查看到全部的数据  用户B可以看到部分数据 其他用户查看的结果全部为空值 现在要新增一个用户C 他可以查看到和B用户相同的内容 该怎么设置授权呢?
      

  4.   

    VDP应该有一个自定义的专门设置用户数据的权限表,找到这张表,把用户B的数据复制到用户C