AGGRE_PROVINCE_CONDIRECTION 是一个存储过程。
思来想去,可能是在删job的时候造成这个问题的。那时候,job正在跑,我强行删除了。现在我再操作这个过程不论是编译、添加调试信息还是重新执行 都会报错这个错误,而且执行时间很长。已经排除过程的原因。求教。是不是我强删Job 没有删干净。

解决方案 »

  1.   


    相关对象可能被锁了。 你找到那个session,把session结束掉在看看。 1. 查看哪些session锁: 
    SQL语句:select 'alter system kill session '''||sid||','||serial#||''';' from v$session where sid in (select sid from v$lock where block = 1);  oracle 锁问题的解决
    http://blog.csdn.net/tianlesoftware/archive/2009/10/28/4733630.aspx------------------------------------------------------------------------------ 
    Blog: http://blog.csdn.net/tianlesoftware 
    网上资源: http://tianlesoftware.download.csdn.net 
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx 
    DBA1 群:62697716(满); DBA2 群:62697977
    DBA3 群:63306533;     聊天 群:40132017
      

  2.   

    我感觉也是对象锁了 ,把存储过程名字换一个,就可以编译、执行、添加调试信息。
    但是 对象什么时候会锁,锁了怎么解除(注,上边那个锁定 我用这条语句查不到被锁:
    select object_name,machine,s.sid,s.serial# 
    from v$locked_object l,dba_objects o ,v$session s
    where l.object_id = o.object_id and l.session_id=s.sid;)
    锁会不会自动解除。
      

  3.   

    v$lock应该只是有enqueue队列锁的信息,而DDL锁好像不在这里面,ddl锁的信息好像是在一系列X$表中的,不过好像10g中有个视图叫dba_ddl_lock,可以试试看。如果没有这个视图,可以去找找安装目录下的catblock.sql脚本,用sys执行。
    select session_id sid, owner, name, type, mode_held held, mode_requested request
    from dba_ddl_locks;