本人C# 连接Oracle做开发。一开始的用户名密码是UserA/PWDA
现在和新建了一个用户UserB/PWDB,可它找不到UserA有权限的表。我把UserA的Select权限授给UserB之后,有如下问题。Conn UserB/PwdB之后Select * from UserA.users 可以。
但是 Select * from users 就找不到表或视图了。请教,我如何把UserA有权限的表的SELECT、Update、Delete权限全都授给UserB呢?使Conn UserB/pwdb之后,
使 Select * from users 可用。谢谢!

解决方案 »

  1.   

    建同义词
    要么加usera.访问
    要么建同义词
    create synonym users for usera.users;
    create synonym tablename1 for usera.tablename1;
    create synonym tablename2 for usera.tablename2;
    ...
      

  2.   

    LZ说的情形是要在userB中建立表userA的同义词啊!
     
      

  3.   

    能不能具体一些,创建了同义词之后,怎么让UserB有权限呢。谢谢另外
    那我要是有50张表,是不要写50个 create synonym 表名 for Usera.表名 ?
      

  4.   

    以dba角色授权后创建SYNONYM,请参考一下:http://sourcecode.cangzhuo.com/Code/Oracle/Table/CreateanddropSYNONYM.htm
      

  5.   

    恩。不过你可以写语句然后导出。用脚本来创建。
    在A用户下执行select 'create synonym ' || table_name || ' for usera.' || table_name || ';'
      from user_tables如下:用usera用户登录
    SQL> select 'create synonym ' || table_name || ' for usera.' || table_name || ';'
      2    from user_tables
      3  ;
     
    'CREATESYNONYM'||TABLE_NAME||'
    --------------------------------------------------------------------------------
    create synonym TB for usera.TB;
    create synonym USERT for usera.USERT;
    create synonym S for usera.S;
    create synonym EMP for usera.EMP;
    create synonym SC for usera.SC;
    create synonym C for usera.C;
    create synonym NEWT for usera.NEWT;
    create synonym A for usera.A;
    create synonym B for usera.B;
    create synonym T for usera.T;
    create synonym TABLE1 for usera.TABLE1;
    create synonym AAA for usera.AAA;
    create synonym TEST for usera.TEST;
    create synonym SYS_TEMP_FBT for usera.SYS_TEMP_FBT;
    把结果拷贝出来再 在userb下执行所有的脚本
      

  6.   

    /--在userB下:
    CREATE SYNONYM users FOR UserA.users;
      

  7.   


    grant SELECT、Update、Delete on users to UserB
      

  8.   


    谢谢!我用 Sys/sa as sysdba 帐户 给UserB授创建同义词权限之后(Grant create public synonym to Userb),然后用Conn Userb/PwdB,还是没有权限创建同义词。怎么回事。
      

  9.   

    应该用UserA给UserB授权Create 同义词的权限,谢谢。我再试试上面那个。
      

  10.   

    以dba用户:grant resource,connect,select all tables to Userb;   多试试。
      

  11.   

    要么你用dba用户赋权限给userb
    grant create synonym to userb
    要么你以dba权限创建公共同义词
    create public  synonym users for usera.users;
    ..
      

  12.   

    oracle是不区别大小写的,所以UserB和Userb应该是同一个用户