在oracle数据库需要建立三个普通用户分别为A、B、C,这三个用户使用不同的表空间和索引空间,要实现这三个用户之间的表能相互访问,用户A建的表用户B、C都能执行查询、更新、插入等操作,用户B建的表用户A、C都能执行查询、更新、插入等操作,用户C建的表用户B、A都能执行查询、更新、插入等操作,但用户A、B、C不能访问其他用户建立的表,当然这三个用户的表是指现在已经建好的和现在还没有建以后会建的表。

解决方案 »

  1.   

    所谓的用户组实际上ORACLE中提供ROLE可以实现。可以建立角色ROLE,把A B C中的表的权限赋予这个角色,再把角色赋予这3个
    用户。这样3个用户之间已经存在的都可以访问。
    上述是针对已经存在数据表,对于还没有建立的表,在建立的时候的权限进行类似的处理即可。也可以开发程序,自动进行授权操作。谢谢!
      

  2.   


    Oracle系统中用户权限的赋予,查看和管理. 
    在Oracle数据库中,用户的权限分为两种(在这里我们不讨论dba或dbopr的权限,只考虑普通用户的权限),分别是System Privilege系统权限 和User Table Privilege用户数据表权限.1.首先,创建用户,以下几条命令可以创建一个用户,前提是必须以DBA的身份登录(如果你不是DBA,不要看下去了):create user DB_USER identified by DB_USER_PW    '创建用户DB_USER,密码为DB_USER_PWgrant create session to DB_USER     '给用户创建会话的权限grant resource to DB_USER 2.当用户建立后,会自动在Oracle数据库系统中生成属于该用户的Scheme (可以理解为所有属于该用户的表,视图....等对象的集合).该用户可以将对这些对象的访问权限赋予其它的系统用户.3.该用户用sqlplus登录后,以下命令可以看到该用户的权限(该部分取自于CNOUG网站):本用户读取其他用户对象的权限: 
    select * from user_tab_privs; 
    本用户所拥有的系统权限:
    select * from user_sys_privs; 
      

  3.   

    应该是不行
    oracle的权限设置只对当前有的对象
    你可以把A、B、C当前有的对象让它们互相访问、互相使用
    不过以后再产生的对象就不行了,需要再次授权
    你可以另外搞个数据库给ABC三个人用,让他们都是DBA就行了
      

  4.   


    你这样仅仅是开发实验环境吧,实际应用部署的时候这样成本太高了吧。ORACLE是要版权的。
    呵呵
      

  5.   


    BEGIN
       FOR i IN (SELECT table_name FROM user_tables) LOOP
           EXECUTE IMMEDIATE 'GRANT ALL ON '||i.table_name||' TO USER_B;
       END LOOP;
    END;
    /