我用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.   

    表是属于用户的 你用sys建立的表 在user1下查询时  应该使用sys.table的形式
      

  2.   

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

  3.   

    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 selected SQL> conn / as sysdba 
    Connected. 
    SQL> create public synonym t1 for sys.t1;  --为对象sys.t1创建同义词t1 Synonym created. SQL> conn test1/test1 
    Connected. 
    SQL> select * from t1;  --这里就可以了 no rows selected
      

  4.   

    呵呵,同义词的功能可以查查oracle文档,oracle这个用处还是蛮多的