目前数据库有两个tablespace, 一个是 HDS(登陆帐号:accountHDS),另一个是HDSDemo(登陆帐号:accountDemo)。
HDS是正式库,HDSDemo是培训用的数据库,两个表空间里的数据表每天同步,一共有490个表。我想创建一个只能访问Demo库权限的帐号(登陆帐号:accountTest)。默认表空间:HDSDemo
临时表空间:TEMP
Profile:DEFAULTGrant connect,select any table to accountTest;问题:当分配好权限后,该帐号不仅仅可以通过 [accountDemo.表名] 访问 Demo库的表,同时也可以通过[accountHDS.表名]。求教:能否只让该帐号访问Demo表,禁止访问正式表?

解决方案 »

  1.   

    select any table 去掉
    对accountDemo的表一一授予对象权限
      

  2.   

    GRANT select ON 表 TO 用户;
    你可以先测试一张表试试!
      

  3.   

    Grant select on 表名 to 用户;
    这样可以,但我有500个表,不能一个一个表去分喔。我只想将某个用户下所有表的select权限授给accountTest.
      

  4.   

    用Cursor循环,
    set serveroutput on;
    declare
      vs_sql varchar2(100) := '';
      cursor c_table_name is select table_name from all_tables where owner = 'SCOTT';
    begin
      for rec_table_name in c_table_name loop
        dbms_output.put_line(rec_table_name.table_name);
        vs_sql := 'grant select on ' || rec_table_name.table_name || ' to public';
        execute immediate vs_sql;
        dbms_output.put_line(vs_sql);
      end loop;
    end;