浏览过oracle提供的dba,develop guide,security,没有找到答案,寻求高手帮助。
需求是这样的,我希望一个schema(其下的所有表,视图,function等等),在有一个用户“访问”后,其他用户可以进行“访问”,包括查询,修改等等。类似于sqlserver database的单用户模式。
我试图通过事务隔离级别最高(系列化)来达到目的,似乎不对。它是基于事务级别的,不是login。
谢谢。

解决方案 »

  1.   

    ??
    啥意思
    是只允许schema只有一个连接么?
      

  2.   

    SQL>  create profile limit_scott limit sessions_per_user 1;
     
    Profile created
     
    SQL> ALTER USER scott profile limit_scott;
     
    User altered
     
    SQL> alter system set resource_limit=true;
     
    System altered
     
    SQL> 
      

  3.   


    哦 ,我记得比如过程在创建的时候可以指定拥有者
    create or replace procedure ……()
    AUTHID CURRENT_USER
    As
    begin
    ……
    end;minitoy的那个好像就是现在一个用户scott的,以前还没怎么涉及到这个
      

  4.   

    触发器应该也可以,判断下v$session里的username=需限制用户的个数,如果是0允许接入,如果>0则返回错误.
      

  5.   

    这个好像有用,不过我的oracle不好,不太明白代码的含义,继续请教。
    前2行的意义好像是说限制每个用户只可以存在一个session。默认情况下一个用户的session是多少,当我程序退出时,我需要将值复原。
    后一行的意义是什么?
    非常感谢。
      

  6.   

    说来话比较长,其实要求就是sqlserver提供的一个database的single模式。
      

  7.   

    sessions_per_user 
    就是你说的单用户模式 建立为SESSION为1 的配置文件修改用户默认的配置文件最后的意思就是启动资源限制(一个session)
      

  8.   

    退出的时候执行
    alter user scott profile default
    就可以恢复了.
      

  9.   

    不过貌似有个问题,你怎么保证你登陆的时候里面只有你一个?
    是不是还需要把其他的session kill 掉.好邪恶啊.
      

  10.   

    这个有其他途径限制。
    倒是有另外一个问题,这个恐怕限制不了sys等其他用户的访问吧?
      

  11.   

    可能是表述不够明确。其他用户的包括非同用户名的用户。
    有没有可能限制某个schema下的对象只能某个用户访问,这样就达到目的了。
    5楼的好像可以,不过不能动态改变,或者说改变太麻烦了,我希望退出后又回到原来的状态。
      

  12.   


    默认一个用户下的东西,没有授权其它用户就不能访问的,你是希望一个用户只能一个SESSION连接到数据库?
    类似DEDICATE 模式,一个用户连接,其它用户不能连接?
      

  13.   

    再次查看了oracle的帮助文档,知道限制dba的办法了。问题解决了,谢谢。