我用sys身份先创建了表1、角色role1和用户user1。然后,我赋予role1对表1的select操作权限。同时,把role1赋给user1。
   这样的话,我就可以用user1用户来检索表1.
   可是,我用sys用户插入了一些数据后,再换成user1登录,对表1进行select操作。
   却提示我:“ORA-00942:表或视图不存在”。为什么?
注:
   执行“select * from role_tab_privs;”,清楚的看到role1拥有对表1的select权限。
   执行“select * from user_role_privs;”,清楚的看到user1属于role1.

解决方案 »

  1.   

    user1登录以后使用如下查询语句 
    select * from sys.表1;
    重复发帖
      

  2.   


    兄弟又是你呀。太谢谢你了
    确实如你所说,但,难道不能把那个表前缀“sys”去掉吗?
      

  3.   

    当然不可以。如果你用sys用户,你就可以 select * from 表1;
    如果是其他用户的话要查询这个表。必须要sys.table的格式.
      

  4.   

    可以通过建立同义词来实现你的要求 就是多了些步骤
    下面举个例子
    SQL> show user
    USER is "SYS"
    SQL> create table t1(id number);Table created.
    SQL> create user test1 identified by test1;User created.SQL> grant connect to test1;Grant succeeded.SQL> grant select on t1 to test1;Grant succeeded.
    SQL> conn test1/test1
    Connected.
    SQL> select * from t1;  --这里是不行的
    select * from t1
                  *
    ERROR at line 1:
    ORA-00942: table or view does not exist
    SQL> select * from sys.t1;no rows selectedSQL> conn / as sysdba
    Connected.
    SQL> create public synonym t1 for sys.t1;  --为对象sys.t1创建同义词t1Synonym created.SQL> conn test1/test1
    Connected.
    SQL> select * from t1;  --这里就可以了no rows selected