假设我的oracle实例中有3个用户u1、u2、u3,我想让u1能够select u2中的所有表,但是又不能select u3中的任何表,这个授权语句该怎么写?
   难道我要对u2中的每一表都执行一次grant语句吗,这样做当然太傻!
 
   有不傻的办法吗?

解决方案 »

  1.   

    可不可以给U1授上一个DBA角色,然后就可以用
    select * from u2.tablename ...
    这样你看行不。
      

  2.   

    这样肯定不行吧,dba这个权限太大了。 不过你可以做一个存储过程来授权就可以了
      

  3.   

    for example:
    在u2用户下写入以下代码:
    spool filename
      select 'grant select on '||table_name||' to u1;' from user_tables;
    spool off
    然后执行该脚本
    其它一样
    应该还算简单吧
      

  4.   

    我要的只是能select数据,zmgowin的办法不错,我现在也是这么用的,但是一旦我修改了其中的表或增加新表时就需要重新执行一遍。难道就没有直接将u2授权给u1的语句吗?