当ANN用户去执行P过程时[P过程没执行完],EBN用户去编译B过程,会出现什么问题

解决方案 »

  1.   

    ebn用户去编译p过程吧?编译不了,那过程被锁住
      

  2.   


    ANN执行P过程,EBN用户去编译B过程楼主打错了?P和B??
    如果没有打错,什么问题都不会出现。打错了的话,不同用户下的过程是同一个?还是两个用户下的同名过程?
    楼主讲的太简单了
      

  3.   

    当ANN用户去执行P过程时[P过程没执行完],EBN用户去编译P过程,会出现什么问题
    不同用户下的过程是同一个不好意思
      

  4.   

    我做得来了
    出现问题:library cache pin 事件等待
    解决办法:方法1.等待Ann执行完,Ben就可以编译了。
              方法2.kill会话,重新串行执行一遍模拟:
    Sys假设是用户A和C:
    1)创建存储过程P,模拟:
    以sys用户登入:
    SQL> conn / as sysdba
    已连接。
    SQL> create or replace procedure P
      2  is
      3  begin
      4  dbms_output.put_line('helloworld');
      5  dbms_lock.sleep(300);
      6  end;
      7  /
    提交完成。SQL> exec P打开另一个窗口,以sys用户登入,编译P过程:
    SQL> conn / as sysdba
    已连接。
    SQL> alter procedure sys.P compile;查看v$session_wait视图的等待事件library cache pinselect sid,seq#,event,p1,p1raw,p2,p2raw,p3,p3raw,state
    from v$session_wait where event like 'library%';利用查询出的PARAW,查询X$KGLOB
    select ADDR,KGLHDADR,KGLHDPAR,KGLNAOWN,KGLNAOBJ,KGLNAHSH,KGLHDOBJ
    from X$KGLOB
    where KGLHDADR ='1DAA6808'查出sid,随时可以kill进程
    select a.sid,a.username,a.program,b.addr,b.KGLPNADR,b.KGLPNUSE,b.KGLPNSES,b.KGLPNHDL,
    b.kGLPNLCK, b.KGLPNMOD, b.KGLPNREQ
    from v$session a,x$kglpn b
    where a.saddr=b.kglpnuse and b.kglpnhdl = '1DAA6808' and b.KGLPNMOD<>03)300秒过去了 后
    SQL> exec PPL/SQL 过程已成功完成。
    SQL> exec sys.PPL/SQL 过程已成功完成。