我之前有一个用户before,我用这个用户登录可以完成所有的select,update,drop表的操作,
现在我用sysdba的身份新建了一个test 用户,而且也给它分配了grant select any table to test
但是现在用test用户连接数据库,用select语句查询时,它却显示没有视图或表。请问这是为什么?我怎么才能让test用户与before用户一样可以查询到所有的表格数据呢?先谢谢了。

解决方案 »

  1.   

    就是说,我新增的用户test,怎么可以才能查询到before用户下的所有的表格?
      

  2.   

    select * from before.tablename
    试下
      

  3.   

    可以查到的,你可以在test用户下用
    SELECT TABLE_NAME ALL_TABLES WHERE OWHER=UPPER('before');
    这样可以看到before下面的表。
    用SELECT * FROM before.TABLE_NAME   (用户名.表名的形式)可以访问before下面的表,
      

  4.   

    哈哈,
    用test用户,select * from before.table 真的可以看到数据,
    但是每次用test用户查看数据,必须得这样吗?那我告诉别人这个test用户名时,
    还得告诉他我的before用户名,而且还得让他用before.表名来查看数据吗?有没有其它办法呢?
      

  5.   

    用SYSNOM。
    如在test用户下:CREATE SYNONYM TABLE_NAME FOR BEFORE.TABLE_NAME;
    这样在就可以直接在test用户下select * from table_name了。
      

  6.   

    如果不具体指明用户,用select的时候ORACLE默认的是查询当前登陆用户下的表和视图等
      

  7.   

    那我有很多个表格,我要一个一个用test用户create synonym吗?还有,我给test用户只给一个select any table的权限,用test登录可以create synonym table吗 ?
      

  8.   

    如果你要每个表都要这种访问方式,就的每个表都建synonym,
    test有create synonym的权限,就像可以给自己建表一样。
      

  9.   

    通常是创建公用同义词。create public synonym syno_name for schema.table