为这几个表创建同义词
create public synonym syname for username.tbname;

解决方案 »

  1.   

    可以在USERA给userb授权,然后在userb里建立同义词:例如:usera 里有test表:
    connect usera/yourpasswd;
    grant all on test to userb;connect userb/yourpasswd;
    drop synonym test;
    create synonym test for usera.test;
      

  2.   

    create public synonym syname for usera.tbname
      

  3.   

    第一个问题和我想的一样,用synonym.我现在就来做。第二个问题怎么解决呢?只要用access做table link,就会看到一大堆表。谢谢大家。
      

  4.   

    对access不太熟悉
    按照我的理解如果用userb来创建dblink,那么用userb能看到的表都能显示出来
    这样的话,只需要设置好userb的权限就可以了,(只访问自己建的表)
    试试吧
      

  5.   

    我只给userb授予了connect的role,是不是也太多了,只给create session可以吗?连接db的最小权限是什么?我只希望userb能够连到db上select那几个特定的表。其他一切都不可以。
      

  6.   

    查一下userb具有的系统权限和对象权限,以及具有的角色本用户读取其他用户对象的权限:
      select * from user_tab_privs;
    本用户所拥有的系统权限:
      select * from user_sys_privs;
      

  7.   

    user_tab_privs中只有SELECT USERA 的指定表。
    USER_SYS_PRIVE只有CREATE SESSION.
    但是在ACCESS中PUBLIC等系统USER的全部表都可以做联接。
      

  8.   

    我没有给userb给角色,只给了create session和select on 。create synonym也是用完以后就收回了。但是为什么access能看到其他系统表?
      

  9.   

    找一个别的用户的表select 试试
    connect userb/pword;
    select * from otheruname.tbname;
    看能不能查看
      

  10.   

    USERA等的其他自创USER的表都不能查询。但是SELECT * FROM CTXSYS.CTX_CLASSES 可以查询。
      

  11.   

    who will help me?