set feedback off
set heading off
set linesize 1000
set pagesize 0
set pause off
set trimspool on
set verify off
spool grant.sql;
select 'grant select on '||owner||'."'||tablename||'" to user1;'
  from user_tables
 where tablename like 'table%'
spool off;

解决方案 »

  1.   

    弱弱地问:
    set feedback off
    set heading off
    set linesize 1000
    set pagesize 0
    set pause off
    set trimspool on
    set verify off
    这是设置一些参数吧?
      

  2.   

    spool grant.sql;
    select 'grant select on '||owner||'."'||tablename||'" to user1;'
      from user_tables
     where tablename like 'table%'
    spool off;
    这个是赋select权限的吧?通过
    select 'grant select on '||owner||'."'||tablename||'" to user1;'
      from user_tables
     where tablename like 'table%'
    这条语句生成的grant语句在什么时候会执行啊?spool.off的时候执行么?
      

  3.   

    另外,那些参数设置和这里的spool grant.sql...spool off有必然联系么?这个spool是啥啊?哪里可以找到相关的资料看看啊?/bow
      

  4.   

    就是把SQL结果输出到文件grant.sql,然后你就可以@grant.sql执行批量授权了
      

  5.   

    楼主的问题是这样的,你把oracle的系统权限和对象权限搞混了.select any table 是一个系统权限,而select on table_1是table_1上的一个对象权限,这两种权限可以交叉使用,但不能向你那样的进行回收。回收权限时只能回收已经付给用户的权限。
      

  6.   

    select 'grant select on '||tname||' to user1;' from tab where tname not like 'table%';将查询结果执行一下可以了!