第三个问题详细举例:
    建立user: appdev, 赋予resource角色,专门给developer用的userid.
然后在appdev下建立很多表,索引,存储过程之类.
    然后,再需要建立user: appadmin, 赋予dba角色, 是管理这个application的dba专用userid. 要求是appadmin的方案和appdev是同一个, 可以管理上面建立的表,索引,存储过程.
    再建立user: appuser, ....  等等,不同userid给不同人使用, 但管理的是同一个DB方案.明白?  怎么实现?  (oracle默认方式建立user,一个user对应一个方案,各不相关)

解决方案 »

  1.   

    似乎第三个问题是无解的..
    sqlserver倒可以
      

  2.   

    CSDN没办法先给一点分数,但不结帖?
      

  3.   

    2.不用设置你就可以看到代码
      conn your_user_name/password
      select text from user_resourec
      where name like your_procedure_name;
    3.select * from dba_sys_privs;--列出所有系统权限
      select * from dba_tab_privs;--列出所有对象权限
      想给用户什么权限就用grant吧
      

  4.   

    简单的问题..第一个,,不够就是不够..肯定是因为权限没有分配..
     第二个问题可以的,,按照你的想法是不行的..不过可以变通一些..存储在程序目录中的脚本是可见的,,而服务器上的用wrap处理..什么时候你找到在服务器上,,如你所想的..告诉我..
      第三个问题,,也简单的很,,还是grant的问题,在sql*plus适当的使用批处理语句..(权限).
       所有这些都有参考的,,不存在技术上的难点,,..
      

  5.   

    第一个问题,DDL在存储过程中应该用动态SQL来执行,也就是
    EXECUTE IMMEDIATE 'create table D_SPC_DATA01(
        time_key timestamp(3) primary key,
        eqp_idchar(6) not null,
        lot_idchar(10) not null,
        spc_valuenumber default 0 not null
    )';
      

  6.   

    grant create any table to user
      

  7.   

    恩,第一个问题可以用动态SQL来实现,第二个问题可以用WRAP来加密,第三个问题不知道
      

  8.   

    第一个问题:当然是用动态sql来做,否则编译都通不过!  sql*plus我用term这个user建表,成功; 然后把该表删了; 再用这个user直接call一个procedure, 作用也是建这个表,就显示权限不足. 奇怪??  (解决方法是有: 加autoid current_user, 但是调用和定义者都是term, 为什么要加这句?  PLSQL GUILD上写明了不用加)第二个问题: 用wrap没错~第三个问题: Oracle好象就是一个user对应一个方案; (不像sqlserver,一个方案可以有很多user) , 此问题无解~~